新在Symfoob娱乐下载ny 5.1:抽象服务参数
2020年4月23日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
提供的
伊斯兰教Israfilov
在# 35076。
有时,当在Symfony应用程序定义服务,有参数不能被添加在配置文件中。ob娱乐下载原因是它们的值只能在运行时计算编译器通过或包的扩展。
在这些情况下,通常添加一个空参数和一些评论解释将被注入后的值。例如,此服务的第二个参数是完整的目录列表,树枝模板存储。这个列表只有当运行应用程序时,因为包也可以添加自己的目录:
1 2 3 4 5
<服务id=“twig.template_iterator”类=“ob娱乐下载Symfony \包\ TwigBundle \ TemplateIterator”><论点类型=“服务”id=“内核”/ ><论点类型=“收集”/ >< !——树枝路径- - ><论点>% twig.default_path %< /论点>< /服务>
其他服务需要应用程序的根名称空间,更好的东西来计算动态运行应用程序时(而不是迫使用户手动配置此值):
1 2 3 4
<服务id=“maker.generator”类=“ob娱乐下载Symfony \包\ MakerBundle \发生器”><论点类型=“服务”id=“maker.file_manager”/ ><论点/ >< !——根名称空间——>< /服务>
在Syob娱乐下载mfony 5.1我们改善这个配置来取代“空参数+评论”通过适当的抽象服务参数。这些参数的值只能在编译器在运行时通过计算或包扩展。
这就是前面的例子看起来像当使用抽象参数:
1 2 3 4
<服务id=“maker.generator”类=“ob娱乐下载Symfony \包\ MakerBundle \发生器”><论点类型=“服务”id=“maker.file_manager”/ ><论点类型=“抽象”关键=“rootNamespace美元”>定义在MakerPass< /论点>< /服务>
的关键
价值定义服务构造函数中的参数名称和值包含在<参数>…< /参数>
是一个可选的评论的观点。如果你使用YAML定义服务,使用另一个语法的基础上抽象!
关键字:
1 2 3 4
maker.generator:类:ob娱乐下载Symfony \包\ MakerBundle \生成器参数:$ rootNamespace:抽象!定义在MakerPass
这是使用PHP时所需的配置:
1 2 3 4 5
使用ob娱乐下载\包\MakerBundle\发电机;使用ob娱乐下载\组件\DependencyInjection\论点\AbstractArgument;美元构建器- >注册(“maker.generator”、发电机::类)- >setArgument (“rootNamespace美元”,新AbstractArgument (“MakerPass定义”));
如果你不取代抽象参数的值在某些编译器通过或包扩展,您将看到以下错误消息:
论点服务的“rootNamespace美元制造商。发生器”是抽象的(MakerPass中定义),你忘了定义它了吗?
发表在#生活在边缘
评论
Sidi LEKHALIFA
说在4月23日,2020年在15:52
太棒了!
这是否将正确与不知名的服务参数?把你的发电机为例,你如何静态传递maker.file_manager ?
maker.generator:
类:Symfoob娱乐下载ny \包\ MakerBundle \生成器
参数:
——“@maker.file_manager”
rootNamespace:美元! MakerPass中定义抽象
或
maker.generator:
类:Symfoob娱乐下载ny \包\ MakerBundle \生成器
参数:
文件管理:美元“@maker.file_manager”
rootNamespace:美元! MakerPass中定义抽象
maker.generator:
类:Symfoob娱乐下载ny \包\ MakerBundle \生成器
参数:
——“@maker.file_manager”
rootNamespace:美元! MakerPass中定义抽象
或
maker.generator:
类:Symfoob娱乐下载ny \包\ MakerBundle \生成器
参数:
文件管理:美元“@maker.file_manager”
rootNamespace:美元! MakerPass中定义抽象
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
有可能和PHP服务定义使用它吗?
Ryan Weaver is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now是的!在幕后,这是通过一个新的AbstractArgumentClass:
$建设者- >注册(“foo”, FooWithAbstractArgument::类)
- > addArgument(新AbstractArgument (“foo”、“巴兹美元”,应该定义为通过));
干杯!