Symfony DependencyInjection:如何在YAML服务定义中表示Closure?

Fin*_*nwe 6 php symfony laravel-5

我有一个服务,当尝试使用调用设置它时需要关闭:在Symfony DI YAML文件中.

Illuminate\Queue\QueueManager:
  arguments:
    app: "@app"
  calls:
    - [ addConnector, [ "@Illuminate\\Queue\Connector\NullConnector" ]]
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以将服务封装到闭包中,因为库代码不会让我插入任何其他内容.

public function addConnector($driver, Closure $resolver)
{
    $this->connectors[$driver] = $resolver;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在Symfony DI容器YAML定义文件中创建Closure(或匿名函数)?我想可以通过一些编译器传递完成,但我想知道是否可能存在这个问题的现有解决方案.

tle*_*nss 5

你可能已经解决了这个问题.但是您可以创建一个返回Closure的工厂

some_callback:
  public: false
  class: callback
  factory: [SomeClass\Factory, create]
Run Code Online (Sandbox Code Playgroud)

您可以将其传递给addConnector调用:

Illuminate\Queue\QueueManager:
  arguments:
    app: "@app"
  calls:
    - [ addConnector, ["@Illuminate\\Queue\Connector\NullConnector", "@some_callback"]]
Run Code Online (Sandbox Code Playgroud)