php – Symfony – 使用另一个捆绑服务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Symfony – 使用另一个捆绑服务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2194字,纯文字阅读大概需要4分钟。
内容图文
我正在尝试使用另一个捆绑包中的服务,而不会在捆绑包之间创建任何依赖关系.我正在尝试使用CompilerPass,但这可能不是最好的方法.
我在BarBundle中创建了一个ParamConverter,FooBundle应该为它的控制器使用它.
但是我收到错误:没有找到名为foo_bundle.converter_service的转换器来转换参数fooObject
到目前为止我所拥有的:
应用程序/配置/ config.yml
foo_bundle:
converter_service: bar_bundle.converter.object
SRC / BarBundle /配置/ service.yml
services:
bar_bundle.converter.object:
class: BarBundle\ParamConverter\ObjectParamConverter
tags:
- { name: request.param_converter, priority: 0, converter: bar_bundle.converter.object }
SRC / FooBundle / DependencyInjection / FooBundleExtension.php
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$container->setParameter('foo_bundle.converter_service.id', $config['converter_service']);
}
SRC / FooBundle / FooBundle.php
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new CompilerPass());
}
SRC / FooBundle / DependencyInjection / CompilerPass.php
public function process(ContainerBuilder $container)
{
$convertserService = $container->getDefinition($container->getParameter('foo_bundle.converter_service.id'));
$container->setDefinition('foo_bundle.converter_service', $convertserService);
}
控制器注释:
/**
* Show Feed document.
*
* @Route("/{id}/add", name="object_add")
* @ParamConverter("fooObject", converter="foo_bundle.converter_service")
*/
public function addAction(ObjectInterface $fooObject)
如果我在CompilerPass中调用$container-> get(‘foo_bundle.converter_service’),我可以看到对象正确设置.
这是一个优先问题吗?即是解析注释后运行的CompilerPass.或者这只是错误的做法?
解决方法:
由于@ParamConverter也加载了CompilerPass,您可能必须先强制??执行.
请注意,默认编译器传递优先级为0且优先级越高,执行越早.
试试这个 :
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new CompilerPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 30);
}
内容总结
以上是互联网集市为您收集整理的php – Symfony – 使用另一个捆绑服务全部内容,希望文章能够帮你解决php – Symfony – 使用另一个捆绑服务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。