Эта страница поможет вам устранить общие проблемы, с которыми вы можете столкнуться при использовании Flight.
Если вы видите ошибку 404 Страница не найдена (но вы клянетесь своей жизнью, что она действительно там и это не опечатка), на самом деле это может быть проблема с возвращением значения в конечной точке маршрута вместо простого его вывода. Причина этого намеренная, но некоторым разработчикам это может ускользнуть.
Flight::route('/hello', function(){ // Это может вызвать ошибку 404 Страница не найдена return 'Hello World'; }); // Что вам, вероятно, нужно Flight::route('/hello', function(){ echo 'Hello World'; });
Причина заключается в том, что в маршрутизаторе встроен специальный механизм, который обрабатывает возвращаемый вывод как инструкцию "перейти к следующему маршруту". Вы можете ознакомиться с этим поведением в разделе Маршрутизация.
Могут быть несколько причин, почему это происходит. Ниже приведены некоторые примеры, но убедитесь также, что вы изучили раздел автозагрузка.
Самая распространенная причина в том, что имя класса не совпадает с именем файла.
Если у вас есть класс с именем MyClass, то файл должен иметь имя MyClass.php. Если у вас есть класс с именем MyClass и файл назван myclass.php, то автозагрузчик не сможет его найти.
MyClass
MyClass.php
myclass.php
Если вы используете пространства имен, то пространство имен должно соответствовать структуре каталогов.
// код // если ваш MyController находится в каталоге app/controllers и у него есть пространство имен // это не сработает. Flight::route('/hello', 'MyController->hello'); // вам нужно выбрать один из этих вариантов Flight::route('/hello', 'app\controllers\MyController->hello'); // или если у вас есть оператор use вверху use app\controllers\MyController; Flight::route('/hello', [ MyController::class, 'hello' ]); // также можно написать Flight::route('/hello', MyController::class.'->hello'); // или так... Flight::route('/hello', [ 'app\controllers\MyController', 'hello' ]);
path()
В контрольном приложении это определяется внутри файла config.php, но для того чтобы ваши классы были найдены, убедитесь, что метод path() определен (вероятно, к корневому каталогу вашего каталога) прежде чем пытаться его использовать.
config.php
// Добавьте путь к автозагрузчику Flight::path(__DIR__.'/../');