Example #1
0
 /**
  * Разбираем контроллер и метод, прописанные в конфиге.
  *
  * Ожидаем FQN имя класса + действие. Или будет выбрано действие, заданное в контроллер по умолчанию.
  *
  * Прим: тут не проверяем существование скрипта в соответствии с классом. Позволяем возникнуть ошибке. Тогда кодер
  * сможет сразу понять, что его конфиг описан неверно, и не придется гадать, почему он видит 404 вместо главной,
  * например. Более того, неправильно описанный контроллер для 404-й с проверкой привел бы с бесконечному редиректу.
  *
  * @param string $handler FQN имя класса [+ действие].
  * @return array
  * @throws ConfigException
  */
 private function parseHandler($handler)
 {
     $handlerArr = explode('->', $handler);
     $ctrlName = $handlerArr[0];
     $this->controller = $ctrlName;
     if (!App::composer()->findFile($ctrlName)) {
         throw new ConfigException("Контроллер не найден. Неверный хендлер '{$handler}' прописан в конфигурации приложения");
     }
     $controller = new $ctrlName();
     $action = $handlerArr[1] ?? $controller->defaultAction;
     $this->action = $action;
     return [$controller, $action];
 }