Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

collection_pass.php

Zuletzt modifiziert: 09.10.2024, 12:54 - Dateigröße: 1.79 KiB


01  <?php
02  /**
03  *
04  * This file is part of the phpBB Forum Software package.
05  *
06  * @copyright (c) phpBB Limited <https://www.phpbb.com>
07  * @license GNU General Public License, version 2 (GPL-2.0)
08  *
09  * 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  }
65