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

编辑本页

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

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

例如,假设您调用了一个服务(这里没有显示)应用\ \ MailerConfiguration邮件,它有一个getMailerMethod ()方法。这将返回一个类似字符串的类型sendmail基于一些配置。

假设你想把这个方法的结果作为构造函数参数传递给另一个服务:App \梅勒.一种方法是用一个表达式:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11
#配置/ services.yaml服务:#……邮件\ App \ MailerConfiguration:App \梅勒:在YAML文件中使用表达式作为参数时,需要使用'@='前缀参数:[' @ =服务(“App \ \ \ \ MailerConfiguration邮件”).getMailerMethod()”)#当使用双引号字符串时,反斜杠需要转义两次(参见https://yaml.org/spec/1.2/spec.html#id2787109)# arguments: ["@=service('App\\\\Mail\\\\MailerConfiguration').getMailerMethod()”)

有关表达式语言语法的详细信息,请参见表达式语法

在这种情况下,您可以访问2个函数:

服务
返回一个给定的服务(参见上面的例子)。
参数
返回一个特定的参数值(语法类似于服务).

您还可以访问容器通过一个容器变量。下面是另一个例子:

  • YAML
  • XML
  • PHP
1 2 3 4 5
#配置/ services.yaml服务:App \梅勒:在YAML文件中使用表达式作为参数时,需要使用'@='前缀参数:[" @ = container.hasParameter(“some_param”)?参数(“some_param”)“default_value””)

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

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
欧宝娱乐app下载地址Symfony 6.0支持通过SensioLabs