Move into nested docroot
This commit is contained in:
		
							parent
							
								
									83a0d3a149
								
							
						
					
					
						commit
						c8b70abde9
					
				
					 13405 changed files with 0 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -0,0 +1,63 @@
 | 
			
		|||
<?php
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of the Symfony package.
 | 
			
		||||
 *
 | 
			
		||||
 * (c) Fabien Potencier <fabien@symfony.com>
 | 
			
		||||
 *
 | 
			
		||||
 * For the full copyright and license information, please view the LICENSE
 | 
			
		||||
 * file that was distributed with this source code.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
namespace Symfony\Component\DependencyInjection\Compiler;
 | 
			
		||||
 | 
			
		||||
use Symfony\Component\DependencyInjection\Definition;
 | 
			
		||||
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
 | 
			
		||||
use Symfony\Component\DependencyInjection\ContainerInterface;
 | 
			
		||||
use Symfony\Component\DependencyInjection\Reference;
 | 
			
		||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Checks that all references are pointing to a valid service.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Johannes M. Schmitt <schmittjoh@gmail.com>
 | 
			
		||||
 */
 | 
			
		||||
class CheckExceptionOnInvalidReferenceBehaviorPass implements CompilerPassInterface
 | 
			
		||||
{
 | 
			
		||||
    private $container;
 | 
			
		||||
    private $sourceId;
 | 
			
		||||
 | 
			
		||||
    public function process(ContainerBuilder $container)
 | 
			
		||||
    {
 | 
			
		||||
        $this->container = $container;
 | 
			
		||||
 | 
			
		||||
        foreach ($container->getDefinitions() as $id => $definition) {
 | 
			
		||||
            $this->sourceId = $id;
 | 
			
		||||
            $this->processDefinition($definition);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function processDefinition(Definition $definition)
 | 
			
		||||
    {
 | 
			
		||||
        $this->processReferences($definition->getArguments());
 | 
			
		||||
        $this->processReferences($definition->getMethodCalls());
 | 
			
		||||
        $this->processReferences($definition->getProperties());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function processReferences(array $arguments)
 | 
			
		||||
    {
 | 
			
		||||
        foreach ($arguments as $argument) {
 | 
			
		||||
            if (is_array($argument)) {
 | 
			
		||||
                $this->processReferences($argument);
 | 
			
		||||
            } elseif ($argument instanceof Definition) {
 | 
			
		||||
                $this->processDefinition($argument);
 | 
			
		||||
            } elseif ($argument instanceof Reference && ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE === $argument->getInvalidBehavior()) {
 | 
			
		||||
                $destId = (string) $argument;
 | 
			
		||||
 | 
			
		||||
                if (!$this->container->has($destId)) {
 | 
			
		||||
                    throw new ServiceNotFoundException($destId, $this->sourceId);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in a new issue