使用依赖注入的类内参数

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.1,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

使用依赖注入的类内参数

您已经看到了如何使用配置参数ob娱乐下载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 %”#真/假(取决于内核的第二参数类),#如预期,因为% 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
名称空间应用程序\DependencyInjection;使用ob娱乐下载\组件\配置\定义\构建器\TreeBuilder;使用ob娱乐下载\组件\配置\定义\ConfigurationInterface;配置实现了ConfigurationInterface{私人美元调试;公共函数__construct(美元调试){美元- >debug =(保龄球)美元调试;}公共函数getConfigTreeBuilder(){美元treeBuilder=TreeBuilder (“my_bundle”);美元treeBuilder- >getRootNode ()- >孩子()/ /……- >booleanNode (“日志”)- >defaultValue (美元- >调试)- >结束()/ /……- >结束();返回美元treeBuilder;}}

的构造函数中配置通过扩展类:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
名称空间应用程序\DependencyInjection;使用ob娱乐下载\组件\DependencyInjection\ContainerBuilder;使用ob娱乐下载\组件\HttpKernel\DependencyInjection\扩展;AppExtension扩展扩展{/ /……公共函数getConfiguration(数组美元配置,ContainerBuilder美元容器){返回配置(美元容器- >getParameter (“kernel.debug”));}}

提示

有一些实例% kernel.debug %使用在一个配置器在TwigBundle类为例。然而,这是因为默认参数值设定的扩展类。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。