参数简介
编辑本页警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.7,现已不再维护。
读本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。
参数简介
您可以在服务容器中定义参数,这些参数可以直接使用,也可以作为服务定义的一部分使用。这可以帮助分离出您希望更经常地更改的值。
配置文件参数说明
使用参数
配置文件的一部分来设置参数:
- YAML
- XML
- PHP
1 2
参数:mailer.transport:sendmail
1 2 3 4 5 6 7 8 9 10
<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><参数><参数关键=“mailer.transport”>sendmail参数>参数>容器>
1
$容器->setParameter (“mailer.transport”,“发送邮件”);
您可以在任何配置文件的其他地方引用参数,方法是将参数用% (%
)标志,例如% mailer.transport %
.这样做的一个用途是将值注入到服务中。这允许您在应用程序之间配置不同版本的服务,或者基于同一个类的多个服务,但在单个应用程序中配置不同。可以将邮件传输的选择注入到梅勒
直接类。但是将它声明为一个参数使其更容易更改,而不是与服务定义绑定和隐藏:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
参数:mailer.transport:sendmail服务:app.mailer:类:AppBundle \梅勒参数:[' % mailer.transport % ')
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><参数><参数关键=“mailer.transport”>sendmail参数>参数><服务><服务id=“app.mailer”类=“AppBundle \梅勒”><论点>% mailer.transport %论点>服务>服务>容器>
1 2 3 4 5 6
使用AppBundle\梅勒;$容器->setParameter (“mailer.transport”,“发送邮件”);$容器->注册(“app.mailer”,梅勒::类)->addArgument (“% mailer.transport %”);
谨慎
之间的值参数
XML配置文件中的标签不会被修剪。
这意味着下面的配置示例将具有该值sendmail \ n \ n
:
1 2 3
<参数关键=“mailer.transport”>sendmail参数>
在某些情况下(对于常量或类名),这可能会抛出错误。为了防止这种情况,你必须像下面这样内联你的参数:
1
<参数关键=“mailer.transport”>sendmail参数>
请注意
形参或参数中的百分号作为字符串的一部分,必须用另一个百分号进行转义:
- YAML
- XML
- PHP
1
参数:(“http://欧宝娱乐app下载地址www.oldmanjams.com/?foo=%%s&bar=%%d”)
1
<论点>http://欧宝娱乐app下载地址www.oldmanjams.com/?foo=%%s,酒吧= % % d论点>
1
->addArgument (“http://欧宝娱乐app下载地址www.oldmanjams.com/?foo=%%s&bar=%%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-在
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><参数><参数关键=“my_mailer.gateways”类型=“收集”><参数>mail1参数><参数>mail2参数><参数>mail3参数>参数><参数关键=“my_multilang.language_fallback”类型=“收集”><参数关键=“en”类型=“收集”><参数>在参数><参数>fr参数>参数><参数关键=“fr”类型=“收集”><参数>fr参数><参数>在参数>参数>参数>参数>容器>
1 2 3 4 5
$容器->setParameter (“my_mailer.gateways”,数组(“mail1”,“mail2”,“mail3”));$容器->setParameter (“my_multilang.language_fallback”,数组(“en”= >数组(“en”,“fr”),“fr”= >数组(“fr”,“en”)));
常量作为参数
XML和PHP格式还支持将PHP常量设置为参数。要利用此特性,请将常量的名称映射到参数键,并将类型定义为常数
.
- YAML
- XML
- PHP
1 2 3
参数:global.constant.value:“@ =常数(“GLOBAL_CONSTANT”)”my_class.constant.value:“@ =常数(My_Class:: CONSTANT_NAME)”
1 2 3 4 5 6 7 8 9 10 11
<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><参数><参数关键=“global.constant.value”类型=“不变”>GLOBAL_CONSTANT参数><参数关键=“my_class.constant.value”类型=“不变”>My_Class: CONSTANT_NAME参数>参数>容器>
1 2
$容器->setParameter (“global.constant.value”, GLOBAL_CONSTANT);$容器->setParameter (“my_class.constant.value”, My_Class::CONSTANT_NAME);
请注意
在Sy欧宝娱乐app下载地址mfony 3.2中,YAML通过php /常量: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关键字的支持。