/** * Разбираем контроллер и метод, прописанные в конфиге. * * Ожидаем 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]; }