[ Index ]

PHP Cross Reference of phpBB-3.3.9-deutsch

title

Body

[close]

/phpbb/di/pass/ -> collection_pass.php (source)

   1  <?php
   2  /**
   3  *
   4  * This file is part of the phpBB Forum Software package.
   5  *
   6  * @copyright (c) phpBB Limited <https://www.phpbb.com>
   7  * @license GNU General Public License, version 2 (GPL-2.0)
   8  *
   9  * For full copyright and license information, please see
  10  * the docs/CREDITS.txt file.
  11  *
  12  */
  13  
  14  namespace phpbb\di\pass;
  15  
  16  use Symfony\Component\DependencyInjection\ContainerBuilder;
  17  use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
  18  
  19  /**
  20  * Appends an add method call to the definition of each collection service for
  21  * the services tagged with the appropriate name defined in the collection's
  22  * service_collection tag.
  23  */
  24  class collection_pass implements CompilerPassInterface
  25  {
  26      /**
  27      * Modify the container before it is passed to the rest of the code
  28      *
  29      * @param ContainerBuilder $container ContainerBuilder object
  30      * @return null
  31      */
  32  	public function process(ContainerBuilder $container)
  33      {
  34          foreach ($container->findTaggedServiceIds('service_collection') as $id => $data)
  35          {
  36              $definition = $container->getDefinition($id);
  37              $is_ordered_collection = (substr($definition->getClass(), -strlen('ordered_service_collection')) === 'ordered_service_collection');
  38              $is_class_name_aware = (isset($data[0]['class_name_aware']) && $data[0]['class_name_aware']);
  39  
  40              foreach ($container->findTaggedServiceIds($data[0]['tag']) as $service_id => $service_data)
  41              {
  42                  if ($is_ordered_collection)
  43                  {
  44                      $arguments = array($service_id, $service_data[0]['order']);
  45                  }
  46                  else
  47                  {
  48                      $arguments = array($service_id);
  49                  }
  50  
  51                  if ($is_class_name_aware)
  52                  {
  53                      $service_definition = $container->getDefinition($service_id);
  54                      $definition->addMethodCall('add_service_class', array(
  55                          $service_id,
  56                          $service_definition->getClass()
  57                      ));
  58                  }
  59  
  60                  $definition->addMethodCall('add', $arguments);
  61              }
  62          }
  63      }
  64  }


Generated: Wed Dec 7 15:09:22 2022 Cross-referenced by PHPXref 0.7.1