我想重写方法"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';
}
}
现在我需要定义服务中的依赖项。我没有线索,因为它是一个供应商的包。
如何从子类继承服务定义?
如果我理解了这个问题,那么你真正需要做的就是改变原始服务的类。一些可以用编译器传递完成的事情:
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);
}
}