Ця сторінка допоможе вам вирішити поширені проблеми, з якими ви можете зіткнутися при використанні 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__.'/../');