flight路由需显式指定http方法,@id参数须用正则约束,响应必须调用flight::json()或手动header()+echo,分组必须在flight::start()前定义。

Flight 的路由和响应机制本身极轻,但容易因“写法顺序”和“返回值误用”直接导致 404、空白页或 header 冲突——不是框架不行,是它不帮你兜底。
Flight::route() 必须带明确 HTTP 方法前缀
Flight 不默认绑定 GET;不加方法名,路由就只匹配所有方法(包括 OPTIONS、HEAD),但多数 Web 服务器或前端发请求时不会触发你预期的回调。
- ✅ 正确写法:
Flight::route('GET /users', function() { ... });、Flight::route('POST /users', function() { ... }); - ❌ 错误写法:
Flight::route('/users', function() { ... });—— 看似省事,实则匹配逻辑模糊,调试时难定位 - ⚠️ 注意:
GET|POST /login是合法的,但若需区分逻辑,建议拆成两个路由,避免回调里堆 if($_SERVER['REQUEST_METHOD'] === 'POST')
参数路由里的 @id 不自动解析,正则约束得手写
Flight 的 @id 只是占位符替换,不校验类型或格式。比如 /user/@id 会把 /user/abc 也传进去,$id = 'abc',后续出错才暴露问题。
- ✅ 安全做法:用正则显式约束,如
Flight::route('GET /user/@id:[0-9]+', function($id) { ... }); - ✅ 更灵活写法:
Flight::route('GET /user/[0-9]+', function() { $id = (int)basename(Flight::request()->url); ... });(适合简单场景) - ⚠️ 别依赖
Flight::path()提取参数——它返回的是去除域名后的完整路径,/v1/user/123就是原样返回,不帮你切分
响应必须用 Flight::json() 或手动 header() + echo,不能 return
Flight 不捕获路由回调的 return 值,写了也丢弃。常见错误是写 return ['data' => 'ok'];,结果页面空白——因为没输出、没设 header。
- ✅ 返回 JSON:
Flight::json(['status' => 'success']);—— 自动设Content-Type: application/json和200 OK - ✅ 自定义状态码:
Flight::response()->status(404); Flight::json(['error' => 'not found']); - ✅ 返回纯文本或 HTML:
header('Content-Type: text/plain'); echo 'done'; - ⚠️ 切忌混用:
Flight::json(...)后再调header()会触发 “headers already sent” 错误
路由分组 Flight::group() 必须在 Flight::start() 前定义
这是最隐蔽的坑:分组不是运行时行为,而是静态注册阶段拼接前缀。一旦 Flight::start() 执行,路由表就冻结了。
- ✅ 正确顺序:
Flight::group('/api', function() { Flight::route('GET /users', ...); }); Flight::start(); - ❌ 无效写法:把
Flight::group(...)放在Flight::start()后面,或包在某个条件判断里 - ⚠️ 分组不支持链式调用:
Flight::group('/v1')->group('/users')会报错;只能嵌套闭包:Flight::group('/v1', function() { Flight::group('/users', function() { ... }); }); - ⚠️ 子路由开头的
/可省可不省:route('GET /list')和route('GET list')在group('/api')下都等价于/api/list
真正卡住人的地方,往往不是语法写错,而是执行时机错——比如 group() 放错位置、return 当成有效输出、或者以为 @id 天然带数字校验。这些点不试一次,光看文档很难意识到。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











