Вот фрагмент кода. PHP: public static function dispatch ($url){ if (self::matchRoute($url)){ echo $controller = 'app\controllers\\' . self::$route['prefix'] . self::$route['controller'] . 'Controller'; if (class_exists($controller)) { $controllerObject = new $controller(self::$route); $action = self::lowerCamelCase(self::$route['action']) . 'Action'; if (method_exists($controllerObject, $action)) { $controllerObject -> $action(); }else { throw new \Exception("Method $controller::$action not found", 404); } }else { throw new \Exception("Controller $controller not found", 404); } }else { throw new \Exception("Page not found", 404); } } if (class_exists($controller)) не видит мой класс: app\controllers\MainController.php, и перебрасывает на: else {throw new \Exception("Controller $controller not found", 404). В браузере я получаю: app\controllers\MainController An error has occurred Error Code: Exceptions Error text: Controller app\controllers\MainController not found Error file: /opt/lampp/htdocs/cryptoriot/classhgpd/core/Router.php Мой класс: app\controllers\MainController.php PHP: <?php namespace classapp\controllers; class MainController { } Моя система: Eclipse IDE for PHP Developers (includes Incubating components) Version: 2021-12 (4.22.0) Build id: 20211202-1639 OS: Linux, v.5.15.12-1-MANJARO, x86_64 / gtk 3.24.31 Java vendor: N/A Java runtime version: 17.0.1+12 Java version: 17.0.1 php 7.4.27-1 Я перепровери код много раз. Пробовал разные варианты написания. Перечитал всё что google имеет на эту тему. Ещё раз прочитал описание классов в php. Прочитал документацию eclipse... Что бы я не делал class_exists() тупо не видит мой класс и всё.
Со слешами всё норм. Я думал это понятно из: PHP: echo $controller = 'app\controllers\\' . self::$route['prefix'] . self::$route['controller'] . 'Controller'; И: В браузере я получаю: app\controllers\MainController
В composer.json у меня заданы следующие пространства и папки для них: PHP: { "name" : "cryptoriot/cryptoriot", "description" : "Fuck The World", "type" : "library", "autoload" : { "psr-4" : { "classapp\\" : "app", "classhgpdas\\" : "classhgpd", "classlibs\\" : "classhgpd/core/libs", "classbase\\" : "classhgpd/core/base", "classcore\\" : "classhgpd/core" } } } А в папке app ещё несколько папок, одна из которых app\controllers где и лежит файл моего класса MainController.php По этому и namespace выглядит как classapp\controllers --- Добавлено --- Composer PHP: require_once dirname(__DIR__) . '/vendor/autoload.php'; --- Добавлено --- Я использую Eclipse IDE. И подумал что,- может есть какая ни буть галочка, в недрах eclipse, которую я не поставил..
Ну так тогда используйте classapp, как вы неймспейс обозвали, а вы используете название папки, куда вы этот неймспейс натравили. И откуда у людей берутся такие мысли... IDE - это просто текстовый редактор с расширенными функциями для удобства работы с кодом. Но текстовые редакторы не выполняют код
Благодарю всех за помощь. Меня не было два дня по не зависящим от меня причинам. Сейчас исправил, всё работает.