Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法在编译过程中添加条令subcriber标记_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php 无法在编译过程中添加条令subcriber标记

Php 无法在编译过程中添加条令subcriber标记,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有一个简单的订户,如下所示: namespace应用程序; 使用条令\公共\事件订阅者; 使用条令\ORM\Event\OnFlushEventArgs; 使用条令\ORM\Events; 类TestSubscriber实现EventSubscriber { 公共函数getSubscribedEvents():数组 { 返回[ 事件::onFlush, ]; } 公共函数onFlush(OnFlushEventArgs$eventArgs):无效 { //一些东西 } } 在编译过程中添加D

我有一个简单的订户,如下所示:

namespace应用程序;
使用条令\公共\事件订阅者;
使用条令\ORM\Event\OnFlushEventArgs;
使用条令\ORM\Events;
类TestSubscriber实现EventSubscriber
{
公共函数getSubscribedEvents():数组
{
返回[
事件::onFlush,
];
}
公共函数onFlush(OnFlushEventArgs$eventArgs):无效
{
//一些东西
}
}
在编译过程中添加Doctrine subscriber标记时,不会触发
onFlush
方法:

namespace-App\DepencyInjection\Compiler;
使用App\TestSubscriber;
使用Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
使用Symfony\Component\DependencyInjection\ContainerBuilder;
使用Symfony\Component\DependencyInjection\Definition;
类TestSubscriberPass实现CompilerPassInterface
{
公共函数进程(ContainerBuilder$container)
{
$definition=新定义(TestSubscriber::class);
$definition->addTag('doctrine.event_subscriber');
$container->setDefinition('app.test\u subscriber',$definition);
}
}
但是,如果我在
services.yaml
中声明标记,它会很好地工作:

服务:
app.test\u用户:
类别:App\TestSubscriber
标签:
-{name:'doctrine.event_subscriber'}
我错过了什么?编译过程执行成功,但标记似乎被忽略。即使禁用TestSubscriber类的自动连接,也会出现此问题

以下是
debug:container
命令输出:
我终于找到了解决办法: 编译过程必须在编译之前执行,因此我在
Kernel.php
中的编译过程声明中设置了一个优先级大于0的grower:

final类内核扩展了BaseKernel
{
使用微内核技术;
受保护的函数生成(ContainerBuilder$container):无效
{
$container->addCompilerPass(新的TestSubscriberPass(),PassConfig::在\u优化之前键入\u,100);
}
}