使用依赖注入的类内参数
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.1,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
使用依赖注入的类内参数
您已经看到了如何使用配置参数欧宝娱乐app下载地址Symfony服务容器。有特殊情况,比如当你想要的,例如,使用% kernel.debug %
参数,使服务在你的包进入调试模式。对于这种情况有更多的工作要做,以使系统理解参数值。默认情况下,你的参数% kernel.debug %
将被视为一个简单的字符串。考虑下面的例子:
1 2 3 4 5 6 7 8 9 10 11
/ /内部配置类美元rootNode- >孩子()- >booleanNode (“日志”)- >defaultValue (“% kernel.debug %”)- >结束()/ /……- >结束();/ /内部扩展类美元配置=美元这- >processConfiguration (美元配置,美元配置);var_dump (美元配置(“日志”]);
现在,看到这密切检查结果:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
my_bundle:日志:真正的#真的,如预期my_bundle:日志:“% kernel.debug %”#真/假AppKernel(取决于第二参数),#如预期,因为% kernel.debug %内部配置#被传递到扩展之前得到评估my_bundle:~#将字符串“% kernel.debug %”。#这是总是认为是真实的。#配置器并不了解# % kernel.debug %”作为一个参数。
为了支持这一用例,配置
类必须注射通过扩展这个参数如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30
名称空间AppBundle\DependencyInjection;使用欧宝娱乐app下载地址\组件\配置\定义\构建器\TreeBuilder;使用欧宝娱乐app下载地址\组件\配置\定义\ConfigurationInterface;类配置实现了ConfigurationInterface{私人美元调试;公共函数__construct(美元调试){美元这- >debug =(保龄球)美元调试;}公共函数getConfigTreeBuilder(){美元treeBuilder=新TreeBuilder ();美元rootNode=美元treeBuilder- >根(“my_bundle”);美元rootNode- >孩子()/ /……- >booleanNode (“日志”)- >defaultValue (美元这- >调试)- >结束()/ /……- >结束();返回美元treeBuilder;}}
的构造函数中配置
通过扩展
类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
名称空间AppBundle\DependencyInjection;使用欧宝娱乐app下载地址\组件\DependencyInjection\ContainerBuilder;使用欧宝娱乐app下载地址\组件\HttpKernel\DependencyInjection\扩展;类AppExtension扩展扩展{/ /……公共函数getConfiguration(数组美元配置,ContainerBuilder美元容器){返回新配置(美元容器- >getParameter (“kernel.debug”));}}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。