php - Symfony 依赖注入(inject) : How to represent Closure in YAML service definitions?

标签 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 定义文件中创建闭包(或匿名函数)?我想这可以通过一些编译器传递来完成,但我想知道是否可能存在针对此问题的现有解决方案。

最佳答案

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

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"]]

关于php - Symfony 依赖注入(inject) : How to represent Closure in YAML service definitions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31325750/

相关文章:

php - 如何在 Symfony 2 的每个 URL 中设置 {locale}?

symfony - 如何调用 Setter 注入(inject)类型

javascript - 如何从 JSON 中重新选择值

mysql - 如何在 Laravel Eloquent 中使用 MIN 和 MAX sql 查询

php - 如何从字符串中删除 iframe 标签?

php - DOM loadhtml提取节点和子节点

php - 无需 "intermediate"即可交互 NodeJS 和 PHP(如 redis)

php - MySQL 中如何修改一个表以将字段组合作为主键?

Symfony2 - 页面浏览计数器

html - Vue.js 表格组件不工作