Version 1
[yaffs-website] / vendor / symfony / dependency-injection / Compiler / RemoveAbstractDefinitionsPass.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\DependencyInjection\Compiler;
13
14 use Symfony\Component\DependencyInjection\ContainerBuilder;
15
16 /**
17  * Removes abstract Definitions.
18  */
19 class RemoveAbstractDefinitionsPass implements CompilerPassInterface
20 {
21     /**
22      * Removes abstract definitions from the ContainerBuilder.
23      *
24      * @param ContainerBuilder $container
25      */
26     public function process(ContainerBuilder $container)
27     {
28         $compiler = $container->getCompiler();
29         $formatter = $compiler->getLoggingFormatter();
30
31         foreach ($container->getDefinitions() as $id => $definition) {
32             if ($definition->isAbstract()) {
33                 $container->removeDefinition($id);
34                 $compiler->addLogMessage($formatter->formatRemoveService($this, $id, 'abstract'));
35             }
36         }
37     }
38 }