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

时间:2015-07-09 18:44:17

标签: php symfony laravel-5

我有一个服务,在尝试使用调用设置它时需要关闭:在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定义文件中创建Closure(或匿名函数)?我想可以通过一些编译器传递来完成,但我想知道是否可能存在解决此问题的现有解决方案。

1 个答案:

答案 0 :(得分:5)

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

struct stat

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

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