Какой-то абсурд. MVC, FrontController разбирает URL и дергает нужный метод нужного класса.
По ссылке site.ru/software/add дергается software\Controller->showAdd()
По ссылке site.ru/software дергается software\Controller->showIndex()
Оба метода protected:
protected function showAdd()
{
echo 'I\'m add';
}
protected function showIndex()
{
echo 'I\'m index';
}
Вот, что дергает через Reflection во фронте:
$rc = new \ReflectionClass($this->controller);
// проверка ошибок...
$controller = $rc->newInstance($this->request, $this->settings, $this->logger, new Response);
$method = $rc->getMethod($this->action);
$method->invoke($controller, ...$this->params);
Первый метод (ссылка) дергается на ура - выводится I'm add, а по второй ссылке пишет вот такое:
Uncaught ReflectionException: Trying to invoke protected method asoft\entries\Controller::showIndex() from scope ReflectionMethod in D:\Мои проекты\Проект COM\audiophilesoft.local\vendor\asoft\FrontController.php:81
Stack trace:
#0 D:\Мои проекты\Проект COM\audiophilesoft.local\vendor\asoft\FrontController.php(81): ReflectionMethod->invoke(Object(asoft\software\Controller))
#1 D:\Мои проекты\Проект COM\audiophilesoft.local\index.php(43): asoft\FrontController->invoke()
#2 {main}
Что за ересь? Методы же абсолютно одинаковые, и одинаково запускаются.
И странно не то что второй protected не работает, а то что
работает первый!..
PHP 7 @ Apache 2.4