Laravel 8.x 版本引入了多项重要特性,以下是核心更新概述:
1. Jetstream 应用脚手架
- 替代原有
laravel/ui的现代化身份认证系统 - 集成
Livewire或Inertia.js实现交互式前端 - 预置团队管理、双因素认证、API 支持等功能
bash
# 创建带 Livewire 的 Jetstream 项目
composer require laravel/jetstream
php artisan jetstream:install livewire
2. 模型目录调整
- 默认将模型放置于
app/Models目录 - 保留
app/User.php兼容旧项目,新模型自动生成到Models下
php
// 生成新模型
php artisan make:model Product
// 文件路径: app/Models/Product.php
3. 类自动发现优化
- 移除
$namespace属性,简化路由定义 - 控制器无需完整命名空间,例如:
php
// routes/web.php
Route::get('/users', 'UserController@index');
4. 模型工厂改进
- 工厂类基于类定义(替代闭包)
- 支持关联关系定义
php
// database/factories/UserFactory.php
public function definition()
{
return [
'name' => $this->faker->name(),
'posts' => Post::factory() // 关联工厂
];
}
5. 迁移压缩
- 通过
schema:dump生成 SQL 文件 - 避免重复执行迁移,提升测试速度
bash
php artisan schema:dump
# 生成 database/schema/mysql-schema.sql
6. 路由缓存增强
- 支持带闭包的路由缓存
- 解决此前无法缓存闭包路由的限制
bash
php artisan route:cache
7. 任务批处理
- 新增
Bus::batch()管理异步任务组 - 提供进度跟踪、失败处理等回调
php
use Illuminate\Bus\Batch;
Bus::batch([
new ProcessPodcast(),
new OptimizePodcast(),
])->then(function (Batch $batch) {
// 任务完成回调
})->dispatch();
8. 速率限制优化
- 增强
RateLimiter功能 - 支持自定义算法(如
throttle:10,1表示 10次/分钟)
php
Route::get('/api/data', function () {
//
})->middleware('throttle:custom_limit');
9. Blade 组件改进
- 简化组件传参语法
- 支持属性自动注入
blade
<!-- 旧版 -->
<x-alert :message="$message" type="error"/>
<!-- 新版自动注入 -->
<x-alert message="Warning" type="error"/>
10. 时间测试助手
- 新增
Date门面控制测试时间 - 替代
Carbon的硬编码时间操作
php
// 测试中冻结时间
Date::freeze('2023-01-01');
echo now(); // 输出 2023-01-01
编程语言C++www.sealinetech.net++c语言的魅力
编程语言C++www.share.sealinetech.net++c语言的魅力
编程语言C++www.m.share.sealinetech.net++c语言的魅力
编程语言C++read.share.sealinetech.net++c语言的魅力
编程语言C++www.blog.sealinetech.net++c语言的魅力
编程语言C++m.sealinetech.net++c语言的魅力
编程语言C++mobile.sealinetech.net++c语言的魅力
编程语言C++wap.sealinetech.net++c语言的魅力
编程语言C++share.sealinetech.net++c语言的魅力
编程语言C++3g.sealinetech.net++c语言的魅力
编程语言C++4g.sealinetech.net++c语言的魅力
编程语言C++5g.sealinetech.net++c语言的魅力
以上特性显著提升了开发效率与代码可维护性,建议通过官方升级指南完成迁移。