参数简介

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.3,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

参数简介

您可以在服务容器中定义参数,这些参数可以直接使用,也可以作为服务定义的一部分使用。这可以帮助分离出您希望更经常地更改的值。

配置文件参数说明

使用参数配置文件的一部分来设置参数:

  • YAML
  • XML
  • PHP
1 2
参数:mailer.transport:sendmail

您可以在任何配置文件的其他地方引用参数,方法是将参数用% ()标志,例如% mailer.transport %.这样做的一个用途是将值注入到服务中。这允许您在应用程序之间配置不同版本的服务,或者基于同一个类的多个服务,但在单个应用程序中配置不同。可以将邮件传输的选择注入到梅勒直接类。但是将它声明为一个参数使其更容易更改,而不是与服务定义绑定和隐藏:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
参数:mailer.transport:sendmail服务:AppBundle \服务\梅勒:参数:[' % mailer.transport % ')

谨慎

之间的值参数XML配置文件中的标签不会被修剪。

这意味着下面的配置示例将具有该值sendmail \ n \ n

1 2 3
<参数关键“mailer.transport”>sendmail参数>

在某些情况下(对于常量或类名),这可能会抛出错误。为了防止这种情况,你必须像下面这样内联你的参数:

1
<参数关键“mailer.transport”>sendmail参数>

请注意

如果您使用以@或者有在其中的任何地方,您都需要通过添加另一个来转义它@

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
# app / config / parameters.yml参数:#这将被解析为字符串'@securepass'mailer_password:“@@securepass”#解析为http://symfony.欧宝娱乐app下载地址com/?foo=%s&bar=%durl_pattern:“http://欧宝娱乐app下载地址www.oldmanjams.com/?foo=%%s&酒吧= % % d '

在PHP中获取和设置容器参数

使用容器的参数访问器方法来处理容器参数是很简单的:

1 2 3 4 5 6 7 8
//检查是否定义了参数容器->hasParameter (“mailer.transport”);//获取参数的值容器->getParameter (“mailer.transport”);//添加一个新的参数容器->setParameter (“mailer.transport”“发送邮件”);

谨慎

用过的符号就是欧宝娱乐app下载地址Symfony公约使参数更易于阅读。参数只是平面键值元素,它们不能被组织成嵌套数组

请注意

只能在容器编译之前设置参数:不能在运行时设置。要了解有关编译容器的更多信息,请参见编译容器

数组参数

参数不需要是平面字符串,它们也可以包含数组值。对于XML格式,需要使用type = "收藏"属性为数组的所有参数。

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10
参数:my_mailer.gateways:[mail1,mail2,mail3]my_multilang.language_fallback:en:--frfr:-fr-

常量作为参数

还支持将PHP常量设置为参数:

  • YAML
  • XML
  • PHP
1 2 3
参数:global.constant.value:php !/常量:GLOBAL_CONSTANTmy_class.constant.value:php !/常量:My_Class:: CONSTANT_NAME

XML中的PHP关键字

默认情况下,真正的而且转换为PHP关键字(分别真正的而且):

1 2 3 4 5 6 7
<参数><参数关键“mailer.send_all_in_once”>参数>参数><!--after parsing $container->getParameter('mailer.send_all_in_once'); // returns false -->

若要禁用此行为,请使用字符串类型:

1 2 3 4 5 6 7
<参数><参数关键“mailer.some_parameter”类型“字符串”>真正的参数>参数><!--after parsing $container->getParameter('mailer.some_parameter'); // returns "true" -->

请注意

这对于YAML和PHP是不可用的,因为它们已经内置了对PHP关键字的支持。

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