<?php 
 
/* 
 * This file is part of the Symfony package. 
 * 
 * (c) Fabien Potencier <[email protected]> 
 * 
 * For the full copyright and license information, please view the LICENSE 
 * file that was distributed with this source code. 
 */ 
 
namespace Symfony\Bundle\FrameworkBundle\Controller; 
 
use Symfony\Component\DependencyInjection\ContainerAwareInterface; 
use Symfony\Component\HttpKernel\Controller\ContainerControllerResolver; 
 
/** 
 * @author Fabien Potencier <[email protected]> 
 * 
 * @final 
 */ 
class ControllerResolver extends ContainerControllerResolver 
{ 
    /** 
     * {@inheritdoc} 
     */ 
    protected function instantiateController(string $class): object 
    { 
        $controller = parent::instantiateController($class); 
 
        if ($controller instanceof ContainerAwareInterface) { 
            $controller->setContainer($this->container); 
        } 
        if ($controller instanceof AbstractController) { 
            if (null === $previousContainer = $controller->setContainer($this->container)) { 
                throw new \LogicException(sprintf('"%s" has no container set, did you forget to define it as a service subscriber?', $class)); 
            } else { 
                $controller->setContainer($previousContainer); 
            } 
        } 
 
        return $controller; 
    } 
}