如何在symfony中继承服务定义(从包中)

vwoqyblh  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(167)

我想覆盖位于供应商包中的服务的方法“foo”:

class SamlProvider implements AuthenticationProviderInterface
{
    protected $userProvider;
    protected $userFactory;
    protected $tokenFactory;
    protected $eventDispatcher;

    public function __construct(UserProviderInterface $userProvider, ?EventDispatcherInterface $eventDispatcher)
    {
        $this->userProvider = $userProvider;
        $this->eventDispatcher = $eventDispatcher;
    }

    protected function foo()
    {
        ....
    }

我创建自己的服务并扩展供应商服务:

class SamlUserProvider extends SamlProvider
{
    protected function foo()
    {
        echo 'bar';
    }
}

现在我需要在service.yml中定义依赖项,因为它是一个供应商包,所以我对此毫无头绪。
如何从子类继承服务定义?

iyfamqjs

iyfamqjs1#

如果我理解了这个问题,那么你真正需要做的就是改变原始服务的类。

class Kernel implements CompilerPassInterface
{
    public function process(ContainerBuilder $container)
    {
        // Or use the actual service id if it's not the class name
        $definition = $container->getDefinition(SamlProvider::class);
        $definition->setClass(SamlUserProvider::class);
    }
}

相关问题