public function ControllerResolver::getControllerFromDefinition in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/lib/Drupal/Core/Controller/ControllerResolver.php \Drupal\Core\Controller\ControllerResolver::getControllerFromDefinition()
Returns the Controller instance with a given controller route definition.
As several resolvers can exist for a single application, a resolver must return false when it is not able to determine the controller.
Parameters
mixed $controller: The controller attribute like in $request->attributes->get('_controller')
Return value
mixed|bool A PHP callable representing the Controller, or false if this resolver is not able to determine the controller
Throws
\InvalidArgumentException|\LogicException Thrown if the controller can't be found.
Overrides ControllerResolverInterface::getControllerFromDefinition
See also
\Symfony\Component\HttpKernel\Controller\ControllerResolverInterface::getController()
1 call to ControllerResolver::getControllerFromDefinition()
- ControllerResolver::getController in core/
lib/ Drupal/ Core/ Controller/ ControllerResolver.php - This method looks for a '_controller' request attribute that represents the controller name (a string like ClassName::MethodName).
File
- core/
lib/ Drupal/ Core/ Controller/ ControllerResolver.php, line 66 - Contains \Drupal\Core\Controller\ControllerResolver.
Class
- ControllerResolver
- ControllerResolver to enhance controllers beyond Symfony's basic handling.
Namespace
Drupal\Core\ControllerCode
public function getControllerFromDefinition($controller, $path = '') {
if (is_array($controller) || is_object($controller) && method_exists($controller, '__invoke')) {
return $controller;
}
if (strpos($controller, ':') === FALSE) {
if (function_exists($controller)) {
return $controller;
}
elseif (method_exists($controller, '__invoke')) {
return new $controller();
}
}
$callable = $this
->createController($controller);
if (!is_callable($callable)) {
throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable.', $path));
}
return $callable;
}