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. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
collection_pass.php
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