故障排除
这个页面将帮助您解决在使用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__.'/../');