为了覆盖某些供应商的服务并设置我的自定义类,我正在使用 CompilerPass。我还需要覆盖传递给此类的参数。我试过这样:
public function process(ContainerBuilder $container)
{
$definition = $container->getDefinition('vendor.service');
$definition->setClass('Acme\DemoBundle\MyClass');
$definition->setArguments(array(
'my_service_id'
));
}
这里的错误是Acme\DemoBundle\MyClass
检索字符串而不是对象。
如何通过自定义服务my_service_id
(在其他捆绑包中定义)或在最坏的情况下service.container
?