Laravel 7.x 版本引入了多项重要特性与优化,以下是核心特性概述:
1. 路由签名语法优化
新增 Route::signed() 和 Route::temporarySigned() 方法,简化签名 URL 的生成与验证:
php
// 生成签名路由
Route::signed('verify', 'VerificationController@verify')->name('verification');
// 验证签名
public function verify(Request $request) {
if (!$request->hasValidSignature()) {
abort(403);
}
// ...
}
2. 自定义 Eloquent 模型解析
支持通过 resolveRouteBinding() 方法自定义路由参数绑定逻辑:
php
class User extends Model {
public function resolveRouteBinding($value, $field = null) {
return $this->where('name', $value)->firstOrFail();
}
}
3. HTTP 客户端增强
集成基于 Guzzle 的轻量级 HTTP 客户端,支持链式调用与并发请求:
php
use Illuminate\Support\Facades\Http;
// 基础请求
$response = Http::get('https://api.example.com/data');
// 并发请求
$responses = Http::pool(fn (Pool $pool) => [
$pool->get('https://service1.com'),
$pool->post('https://service2.com', ['key' => 'value'])
]);
4. CORS 原生支持
通过 cors 中间件直接处理跨域请求,无需额外包:
php
// 在 app/Http/Kernel.php 注册中间件
'cors' => \Illuminate\Http\Middleware\HandleCors::class,
5. 队列任务优化
- 任务批处理 :通过
Batchable接口管理任务组状态。 - 失败任务重试:支持精确控制重试逻辑:
php
class ProcessPodcast implements ShouldQueue {
public $tries = 3;
public function retryUntil() {
return now()->addMinutes(10);
}
}
6. Blade 组件增强
- 动态组件 :通过
<x-dynamic-component>渲染可变组件。 - 组件属性合并 :使用
:attributes合并额外属性至根元素:
blade
<x-button :attributes="['class' => 'bg-red']">Submit</x-button>
7. 测试辅助工具
- 标记测试方法 :通过
@test注释快速筛选测试用例:
php
/** @test */
public function user_can_login() { ... }
- HTTP 测试优化:支持模拟文件上传与多部分请求。
8. Artisan 命令改进
make:model支持生成迁移文件、控制器等关联文件:
bash
php artisan make:model Product -mcr
- 新增
make:factory和make:seed命令快速生成工厂与数据填充。
9. Eloquent 多对多关联优化
支持自定义中间表模型:
php
class RoleUser extends Pivot { ... }
class User extends Model {
public function roles() {
return $this->belongsToMany(Role::class)->using(RoleUser::class);
}
}
10. 路由缓存兼容性提升
支持闭包路由缓存(需转换为控制器),提升生产环境性能。
总结:Laravel 7.x 聚焦于开发效率与代码可维护性,通过路由优化、HTTP 工具链、测试增强等特性,显著提升框架现代化程度。升级时需注意部分特性(如签名路由语法)的向后兼容性调整。