Symfony依赖注入:如何在YAML服务定义中表示闭包?

6

我有一个服务,在使用Symfony DI YAML文件进行设置调用时需要使用闭包。

Illuminate\Queue\QueueManager:
  arguments:
    app: "@app"
  calls:
    - [ addConnector, [ "@Illuminate\\Queue\Connector\NullConnector" ]]

我想知道是否能将服务封装到闭包中,因为库代码不允许我插入其他东西。

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

有没有办法在Symfony DI容器YAML定义文件中创建闭包(或匿名函数)?我猜这可以通过某些编译器传递实现,但我想知道是否可能存在此问题的现有解决方案。
1个回答

6

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

some_callback:
  public: false
  class: callback
  factory: [SomeClass\Factory, create]

你可以将它传递给addConnector调用:

Illuminate\Queue\QueueManager:
  arguments:
    app: "@app"
  calls:
    - [ addConnector, ["@Illuminate\\Queue\Connector\NullConnector", "@some_callback"]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接