如何注入值基于复杂表达式

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.2,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何注入值基于复杂表达式

服务容器还支持一个“表达式”,允许您为服务注入非常特定的值。

例如,假设您有一个第三服务(这里没有显示),调用mailer_configuration,它有一个getMailerMethod ()方法,它将返回一个字符串sendmail基于一些配置。记住的第一个参数my_mailer服务是一个简单的字符串sendmail:

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / services.yml服务:app.mailer:类:AppBundle \梅勒参数:(发送邮件)

而不是硬编码,我们如何得到这个值的getMailerMethod ()的新mailer_configuration服务吗?一种方法是使用一个表达式:

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config.yml服务:my_mailer:类:AppBundle \梅勒参数:[" @ =服务(mailer_configuration) .getMailerMethod ())

了解更多关于表达式语言语法,看表达式语法

在这种情况下,你可以访问2功能:

服务
返回给定服务(见上面的示例)。
参数
返回一个特定的参数值(语法就像服务)。

你也可以访问ContainerBuilder通过一个容器变量。这是另一个例子:

  • YAML
  • XML
  • PHP
1 2 3 4
服务:my_mailer:类:AppBundle \梅勒参数:[" @ = container.hasParameter (“some_param”)吗?参数(“some_param”):“default_value””)

表达式可用于参数,属性作为参数,配置器并作为参数调用(方法调用)。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。