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

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

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

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

例如,假设您有第三个被调用的服务(这里没有显示)mailer_configuration,它有一个getMailerMethod ()方法,该方法将返回一个字符串sendmail基于一些配置。的第一个参数my_mailerService是简单字符串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””)

表达式可以用在参数属性,作为与配置器作为论证调用(方法调用)。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。