Laravel 6.x 于 2019 年发布,作为长期支持(LTS)版本,其核心特性包括:
1. 语义化版本管理
首次引入语义化版本规范(SemVer),版本号格式为 主版本.次版本.修订版本,明确区分破坏性更新与功能增强。
2. Job 中间件
php
// 定义中间件
class LogJobMiddleware
{
public function handle($job, $next)
{
Log::info('Job starting: '.get_class($job));
$next($job);
}
}
// 应用中间件
class ProcessOrder implements ShouldQueue
{
use Dispatchable, InteractsWithQueue;
public function middleware()
{
return [new LogJobMiddleware];
}
}
通过中间件封装队列任务逻辑,提升代码复用性。
3. Laravel UI 分离
前端脚手架独立为 laravel/ui 包:
bash
composer require laravel/ui
php artisan ui vue --auth
支持 Vue/React/Bootstrap 等前端方案,降低核心框架耦合度。
4. Eloquent 子查询增强
php
// 高级子查询支持
User::addSelect([
'last_post' => Post::select('title')
->whereColumn('user_id', 'users.id')
->latest()
->limit(1)
]);
简化复杂关联数据的查询构建。
5. 任务运行器优化
新增 artisan test 命令整合 PHPUnit:
bash
php artisan test --filter=FeatureTest
支持测试过滤、并行测试等高级特性。
6. 路由模型绑定改进
php
// 自定义键名绑定
Route::get('posts/{post:slug}', function (Post $post) {
return $post;
});
// 多模型绑定
Route::get('users/{user}/posts/{post}', function (User $user, Post $post) {
return $post;
});
支持非 ID 字段的路由绑定,提升灵活性。
7. 响应宏扩展
php
// 注册宏
Response::macro('caps', function ($value) {
return Response::make(strtoupper($value));
});
// 调用宏
return response()->caps('hello');
允许自定义统一响应格式。
版本生命周期
- LTS 支持周期:提供 3 年安全更新(至 2022 年 9 月)
- PHP 要求:需 ≥ PHP 7.2
提示:升级时需注意
beyondcode/laravel-self-diagnosis等包的兼容性调整。