Виправлення несправностей
Ця сторінка допоможе вам вирішити поширені проблеми, з якими ви можете зіткнутися при використанні Flight.
Поширені проблеми
404 Не знайдено або несподівана поведінка маршруту
Якщо ви бачите помилку 404 Не знайдено (але клянетесь, що це дійсно там і це не помилка), це може бути проблемою з тим, що ви повертаєте значення у вашому маршруті замість того, щоб просто виводити його. Причина цього є навмисною, але може підкочуватися до деяких розробників.
Flight::route('/hello', function(){
// Це може викликати помилку 404 Не знайдено
return 'Hello World';
});
// Що ви, напевно, хочете
Flight::route('/hello', function(){
echo 'Hello World';
});
Причина цього полягає в особливому механізмі, вбудованому в маршрутизатор, який обробляє повернення виводу як одиночний для "перейти до наступного маршруту". Ви можете ознайомитися з поведінкою, задокументованою в розділі Маршрутизація.
Клас не знайдено (автозавантаження не працює)
Можливо, є кілька причин, чому це не відбувається. Нижче наведено кілька прикладів, але переконайтеся, що ви також переглянули розділ автозавантаження.
Неправильне ім'я файлу
Найпоширенішою є те, що ім'я класу не відповідає імені файлу.
Якщо у вас є клас під назвою MyClass
, то файл повинен називатися MyClass.php
. Якщо у вас є клас під назвою MyClass
, а файл називається 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()
визначено (ймовірно, до кореня вашого каталогу) перед тим, як ви спробуєте його використовувати.
// Додайте шлях до автозавантажувача
Flight::path(__DIR__.'/../');