class ContainerControllerResolver
A controller resolver searching for a controller in a psr-11 container when using the "service::method" notation.
@author Fabien Potencier <fabien@symfony.com> @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
Hierarchy
- class \Symfony\Component\HttpKernel\Controller\ControllerResolver implements \Symfony\Component\HttpKernel\Controller\ControllerResolverInterface
- class \Symfony\Component\HttpKernel\Controller\ContainerControllerResolver extends \Symfony\Component\HttpKernel\Controller\ControllerResolver
Expanded class hierarchy of ContainerControllerResolver
File
-
vendor/
symfony/ http-kernel/ Controller/ ContainerControllerResolver.php, line 24
Namespace
Symfony\Component\HttpKernel\ControllerView source
class ContainerControllerResolver extends ControllerResolver {
public function __construct(ContainerInterface $container, ?LoggerInterface $logger = null) {
parent::__construct($logger);
}
protected function instantiateController(string $class) : object {
$class = ltrim($class, '\\');
if ($this->container
->has($class)) {
return $this->container
->get($class);
}
try {
return parent::instantiateController($class);
} catch (\Error $e) {
}
$this->throwExceptionIfControllerWasRemoved($class, $e);
if ($e instanceof \ArgumentCountError) {
throw new \InvalidArgumentException(\sprintf('Controller "%s" has required constructor arguments and does not exist in the container. Did you forget to define the controller as a service?', $class), 0, $e);
}
throw new \InvalidArgumentException(\sprintf('Controller "%s" does neither exist as service nor as class.', $class), 0, $e);
}
private function throwExceptionIfControllerWasRemoved(string $controller, \Throwable $previous) : void {
if ($this->container instanceof Container && isset($this->container
->getRemovedIds()[$controller])) {
throw new \InvalidArgumentException(\sprintf('Controller "%s" cannot be fetched from the container because it is private. Did you forget to tag the service with "controller.service_arguments"?', $controller), 0, $previous);
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
ContainerControllerResolver::instantiateController | protected | function | Returns an instantiated controller. | Overrides ControllerResolver::instantiateController |
ContainerControllerResolver::throwExceptionIfControllerWasRemoved | private | function | ||
ContainerControllerResolver::__construct | public | function | Overrides ControllerResolver::__construct | |
ControllerResolver::$allowedControllerAttributes | private | property | ||
ControllerResolver::$allowedControllerTypes | private | property | ||
ControllerResolver::allowControllers | public | function | ||
ControllerResolver::checkController | private | function | ||
ControllerResolver::createController | protected | function | Returns a callable for the given controller. | |
ControllerResolver::getClassMethodsWithoutMagicMethods | private | function | ||
ControllerResolver::getController | public | function | Overrides ControllerResolverInterface::getController | |
ControllerResolver::getControllerError | private | function |