好的,Laravel 8.x 版本引入了多项重要特性和改进,以下是主要亮点:
🚀 Jetstream 应用脚手架
Laravel 8 引入了 Jetstream ,这是一个现代化的应用脚手架,替代了之前的 laravel/ui 包。Jetstream 提供:
- 基于 Livewire 或 Inertia.js 的前端栈选择
- 开箱即用的用户认证(登录、注册、邮箱验证、双因素认证)
- 团队管理功能(适用于 SaaS 类应用)
- API 支持(通过 Sanctum)
php
// 安装 Jetstream(Livewire 版本)
composer require laravel/jetstream
php artisan jetstream:install livewire
npm install && npm run dev
🔄 模型工厂类
模型工厂从闭包形式升级为基于类的语法,更符合面向对象设计:
php
// 定义工厂
class UserFactory extends Factory {
public function definition() {
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
];
}
}
// 使用工厂
User::factory()->count(5)->create();
🛣️ 路由优化
-
默认路由模型绑定 :无需显式绑定(如
Route::get('users/{user}')) -
路由命名空间 :不再默认添加
App\Http\Controllers前缀,需显式声明:phpRoute::get('/profile', [ProfileController::class, 'show']);
📦 模型目录调整
默认模型存放路径从项目根目录移至 app/Models/,例如:
php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
// ...
}
📊 迁移批处理
新增 Schema::whenTableDoesntHaveColumn() 方法,简化迁移文件中对已有表的修改:
php
Schema::table('users', function (Blueprint $table) {
$table->whenTableDoesntHaveColumn('email_verified_at',
function ($table) {
$table->timestamp('email_verified_at')->nullable();
}
);
});
📡 事件监听优化
支持基于接口的事件监听注册:
php
class OrderShippedListener implements ShouldQueue {
public function handle(OrderShipped $event) {
// 处理逻辑
}
}
⚡ 速率限制增强
throttle 中间件支持更灵活的速率限制配置:
php
Route::middleware('throttle:10,1')->group(function () {
Route::get('/api/data', [DataController::class, 'index']);
});
🧪 测试辅助方法
新增 assertSoftDeleted() 方法用于测试软删除:
php
public function test_user_soft_delete() {
$user = User::factory()->create();
$user->delete();
$this->assertSoftDeleted($user);
}
🔄 队列批处理
新增 Batchable 接口,支持任务批量处理及进度跟踪:
php
$batch = Bus::batch([
new ProcessPodcast(),
new CompressPodcast(),
])->then(function (Batch $batch) {
// 批量完成回调
})->dispatch();
📝 Blade 组件标签
引入类似 Vue 的组件标签语法,提升模板可读性:
blade
<x-alert type="error" :message="$message">
<x-slot name="title">Error!</x-slot>
</x-alert>
📌 其他更新
- PHP 版本要求:最低 PHP 7.3
- 默认邮件模板:使用 Tailwind CSS 重写
- 路由缓存优化:支持闭包路由缓存
artisan serve改进 :默认启用更安全的--host选项
升级建议:使用 Composer 更新至最新 8.x 版本:
bash
composer update laravel/framework
建议结合官方升级指南:Laravel 8.x Upgrade Guide 进行迁移。