Laravel 8.x 于2020年9月发布,引入了多项重要改进,以下是核心特性详解:
1. Laravel Jetstream
-
现代化应用脚手架:替代原有认证脚手架
-
集成技术栈 :
php// 安装命令示例 composer require laravel/jetstream php artisan jetstream:install livewire -
支持
Livewire和Inertia.js两种前端栈 -
内置双因素认证、会话管理、API支持
2. 模型工厂类重构
php
// 旧版工厂 (基于函数)
$factory->define(App\User::class, function (Faker $faker) {...});
// 新版工厂 (基于类)
class UserFactory extends Factory {
public function definition() {
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
];
}
}
3. 迁移压缩
解决迁移文件过多问题:
bash
php artisan schema:dump
# 生成 schema/migrations.sql
- 执行新迁移时优先读取SQL文件
- 保留未执行迁移的灵活性
4. 任务批处理
php
use Illuminate\Bus\Batch;
use App\Jobs\ProcessPodcast;
Batch::dispatch([
new ProcessPodcast(1),
new ProcessPodcast(2),
])->then(function (Batch $batch) {
// 批处理完成回调
})->catch(function (Batch $batch, Throwable $e) {
// 异常处理
});
5. 路由命名空间调整
- 移除
RouteServiceProvider中的默认控制器命名空间 - 需显式指定完整类名:
php
// 原方式
Route::get('/user', 'UserController@index');
// 新方式
use App\Http\Controllers\UserController;
Route::get('/user', [UserController::class, 'index']);
6. 事件监听器优化
- 自动发现事件监听器
- 无需在
EventServiceProvider中手动注册 - 约定:
Listeners目录下文件自动关联同名事件
7. 速率限制增强
php
Route::middleware(['throttle:api'])->group(function () {
Route::get('/profile', function () {
// 每分钟60次请求限制
});
});
- 支持Redis驱动
- 自定义限制策略:
RateLimiter::for()
8. Blade组件改进
- 动态组件渲染:
blade
<x-dynamic-component :component="$componentName" class="mt-4" />
- 属性合并:自动合并class属性
- 内联视图组件:
@component语法简化
9. 时间测试助手
php
// 冻结时间
$this->travelTo(now()->subDays(10));
// 时间前进
$this->travel(5)->days();
10. 其他改进
- 队列
retryUntil()方法弃用 → 改用backoff()属性 artisan serve命令支持热重载assertDeleted()更名 →assertModelMissing()- 默认启用
tailwindcss替代Bootstrap
升级建议 :使用官方升级工具
laravel-shift进行平滑迁移,特别注意路由和控制器的命名空间调整。