Symfony Compiler Pass - 我需要实现优先级还是已经实现了

时间:2018-02-05 12:24:21

标签: php symfony dependency-injection

Symfony版本:3.4

我想知道我是否需要在编译器传递中自己实现优先级属性,或者它已经实现了?

主要是我正在尝试为其提供者之前加载的外部库“scheb / two-factor-bundle”注册服务提供者。 Compiler pass in question.

我正在尝试在标签上使用优先级属性,但似乎无法正常工作。

Symfony在findTaggedServiceIds

中呼叫Symfony\Component\DependencyInjection\ContainerBuilder时需要考虑的优先事项

更新 正如@fabian-papet所指出的,这是留给开发人员实现的。 在这种情况下,不要害怕symfony也有帮助。我找到了trait,在这种情况下Symfony\Component\DependencyInjection\CompilerPriorityTaggedServiceTrait可以提供帮助。 感谢作者Iltar van der Berg。

1 个答案:

答案 0 :(得分:0)

The is no such a feature integrated in Symfony to add priority to tags. This is a feature you'll have to implement. Here's a summary of the findTaggedServiceIds function:

<?php
function findTaggedServiceIds($name, $throwOnAbstract = false)
{
    $this->usedTags[] = $name;
    $tags = array();
    foreach ($this->getDefinitions() as $id => $definition) {
        if ($definition->hasTag($name)) {
            $tags[$id] = $definition->getTag($name);
        }
    }
}