Returns a callable for the given controller.
protected createController ( string $controller ) : callable | ||
$controller | string | A Controller string |
return | callable | A PHP callable |
/** * Returns a callable for the given controller. * * @param string $controller A Controller string * * @return mixed A PHP callable * * @throws \LogicException When the name could not be parsed * @throws \InvalidArgumentException When the controller class does not exist */ protected function createController($controller) { if (false === strpos($controller, '::')) { $count = substr_count($controller, ':'); if (2 == $count) { // controller in the a:b:c notation then $controller = $this->parser->parse($controller); } elseif (1 == $count) { // controller in the service:method notation list($service, $method) = explode(':', $controller, 2); return array($this->container->get($service), $method); } elseif ($this->container->has($controller) && method_exists($service = $this->container->get($controller), '__invoke')) { return $service; } else { throw new \LogicException(sprintf('Unable to parse the controller name "%s".', $controller)); } } return parent::createController($controller); }
/** * Returns a callable for the given controller. * * @param string $controller A Controller string * * @return mixed A PHP callable * * @throws \LogicException When the name could not be parsed * @throws \InvalidArgumentException When the controller class does not exist */ protected function createController($controller) { if (false === strpos($controller, '::')) { $count = substr_count($controller, ':'); if (2 == $count) { // controller in the a:b:c notation then $controller = $this->parser->parse($controller); } elseif (1 == $count) { // controller in the service:method notation list($service, $method) = explode(':', $controller, 2); return array($this->container->get($service), $method); } elseif ($this->container->has($controller)) { $controllerInstance = $this->container->get($controller); if (!method_exists($controllerInstance, '__invoke')) { $exceptionMessage = sprintf('The class "%s" specified as controller service "%s" must define an __invoke method, but does not.', get_class($controllerInstance), $controller); throw new \LogicException($exceptionMessage); } return $controllerInstance; } else { throw new \LogicException(sprintf('Unable to parse the controller name "%s".', $controller)); } } return parent::createController($controller); }