src/Eccube/DependencyInjection/Compiler/AutoConfigurationTagPass.php line 42

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Eccube\DependencyInjection\Compiler;
  13. use Doctrine\Common\EventSubscriber;
  14. use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
  15. use Symfony\Component\DependencyInjection\ContainerBuilder;
  16. use Symfony\Component\DependencyInjection\Definition;
  17. /**
  18.  * サービスタグの自動設定を行う
  19.  *
  20.  * 以下のタグは自動設定が行われないため, 自動設定対象になるように処理する
  21.  *
  22.  * - doctrine.event_subscriber
  23.  *
  24.  * PluginPassで無効なプラグインのタグは解除されるため, PluginPassより先行して実行する必要がある
  25.  */
  26. class AutoConfigurationTagPass implements CompilerPassInterface
  27. {
  28.     public function process(ContainerBuilder $container)
  29.     {
  30.         foreach ($container->getDefinitions() as $definition) {
  31.             $this->configureDoctrineEventSubscriberTag($definition);
  32.         }
  33.     }
  34.     protected function configureDoctrineEventSubscriberTag(Definition $definition)
  35.     {
  36.         $class $definition->getClass();
  37.         if (!is_subclass_of($classEventSubscriber::class)) {
  38.             return;
  39.         }
  40.         if ($definition->hasTag('doctrine.event_subscriber')) {
  41.             return;
  42.         }
  43.         $definition->addTag('doctrine.event_subscriber');
  44.     }
  45. }