Esempio n. 1
0
 /**
  *
  * {@inheritdoc}
  *
  * @see \MinWork\Http\Interfaces\RouterInterface::getController()
  */
 public function getController() : ControllerInterface
 {
     if (is_null($this->controllerObject)) {
         $controllerName = $this->controller;
         if (!array_key_exists($controllerName, $this->routing)) {
             // Try text id of controller name
             $controllerName = Formatter::textId($controllerName);
             if (!array_key_exists($controllerName, $this->routing)) {
                 $controllerName = self::DEFAULT_CONTROLLER_ROUTE_NAME;
                 if (!array_key_exists($controllerName, $this->routing)) {
                     throw new \DomainException("Cannot load controller object for key: {$this->controller}");
                 }
                 $method = $this->method;
                 if ($method == self::DEFAULT_CONTROLLER_METHOD) {
                     $this->addMethodArgument($this->methodArguments, $this->controller, false);
                 } else {
                     $this->addMethodArgument($this->methodArguments, $method, false);
                     $this->method = $this->controller;
                 }
                 $this->controller = $controllerName;
             }
         }
         $controllerClass = $this->routing[$controllerName];
         if (is_string($controllerClass) && class_exists($controllerClass)) {
             $this->controllerObject = new $controllerClass();
         } elseif (is_object($controllerClass) && $controllerClass instanceof ControllerInterface) {
             $this->controllerObject = $controllerClass;
         } else {
             throw new \DomainException("Controller class ({$controllerClass}) is invalid");
         }
     }
     return $this->controllerObject;
 }