news 2026/4/23 20:42:11

2025 年必须尝试的 5 个 Laravel 新特性

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2025 年必须尝试的 5 个 Laravel 新特性

引言

Laravel 一直在向世人证明,为什么它是最受欢迎的 PHP 框架之一。每一次版本更新,都能带来让日常开发更顺手、更干净、也更高效的新能力。如果你还没来得及研究最近的改动,下文这 5 个全新特性 值得你马上关注——从更聪明的事务回滚回调,到更干净的资源定义方式,统统帮你减轻心智负担。

1. afterRollback(): 事务失败时的自动响应

你大概已经习惯用 DB::transaction() 来保证数据一致性,对吧?Laravel 现在在事务工具箱里塞进了一个新帮手 —— afterRollback()。它会在事务失败时自动触发,让你不需要额外写 try-catch 就能处理清理、记录日志或发送通知等动作。

use Illuminate\Support\Facades\DB;

DB::transaction(function () {

DB::afterCommit(function () {

// 事务提交成功时执行

});

DB::afterRollback(function () {

// 事务回滚时执行

});

// 你的事务性代码...

});

这个特性自 Laravel v12.32.0 起可用。简单好用,尤其适合在回滚后记录日志、写入审计记录或清理临时数据,再也不用在事务块外层手动兜底。

2. Request Batching:一口气处理多个 HTTP 请求

一次性发起多个 HTTP 请求,现在变得更简洁了。借助全新的 Request Batching,你可以优雅地收集多个调用并统一发送,同时在生命周期的不同阶段加入回调。

use Illuminate\Http\Client\Batch;

use Illuminate\Support\Facades\Http;

Http::batch(function (Batch $batch) {

return [

$batch->get('https://batch.example/one'),

$batch->get('https://batch.example/two'),

$batch->get('https://batch.example/three'),

];

})

->before(fn (Batch $b) => logger()->info("Batch created with {$b->totalRequests} requests"))

->progress(fn (Batch $b, $key, $response) => logger()->info("Request {$key} finished!"))

->then(fn () => logger()->info("All requests completed!"))

->send();

你甚至可以给每个请求命名,方便后续读取:

$responses = Http::batch(fn (Batch $b) => [

$b->as('users')->get('https://api.example.local/users'),

$b->as('orders')->get('https://api.example.local/orders'),

])->send();

$users = $responses['users']->json();

对比以前需要手写 Http::pool() 并循环处理响应,Batching 让流程更清晰、结构更稳定,也更易于维护。

3. Dynamic Wheres:更优雅的条件查询

一个不大却格外顺手的改进:Eloquent 现在可以通过 动态 where 方法 来组合条件。过去你可能这么写:

// 以前

$order = Order::where('invoice', '123')->where('status', 'pending')->first();

// 现在

$order = Order::whereInvoiceAndStatus('123', 'pending')->first();

Laravel 会自动解析方法名并拼接对应的查询条件。小改动,大顺手,让链式查询的表达更贴近自然语言。

但个人建议不要使用,太魔法,不利于后期代码维护

4. 登录后的自动重定向

登录后的重定向体验也被打磨得更丝滑。借助 redirect()->intended(),你可以轻松把用户送回他们原本想访问的页面:

// middleware

return redirect()->guest(route('admin.login'))->with('error', 'Please login first');

// after login

return redirect()->intended('/admin/dashboard');

Laravel 会自动记住用户登录前尝试访问的地址,并在认证成功后送他们回去。体验更连贯,不需要额外维护 session 或 query 参数。

5. 模型资源的 PHP Attributes,让定义更简洁

以前要把模型转成资源,需要每次显式指定资源类:

// Before

$userData = $user->toResource(UserProfileResource::class);

$userList = $userCollection->toResourceCollection(UserCollectionResource::class);

现在,Laravel 允许你在模型上用 PHP Attributes 直接声明默认资源:

// Now

#[UseResource(UserDetailResource::class)]

#[UseResourceCollection(UserListResource::class)]

class User extends Model

{

protected $fillable = ['name', 'email', 'profile_picture', 'bio'];

}

$userData = $user->toResource();

$userList = $userCollection->toResourceCollection();

告别重复的样板代码。在大型项目里尤为有用:资源映射统一放在模型上,逻辑更集中、调用也更干净。

总结

这 5 个 Laravel 新功能看似轻量,却能在日常开发中带来扎实的效率提升:

afterRollback() 让事务失败后的补救动作自动化;

Request Batching 用一套更优雅的语法覆盖多请求场景;

Dynamic Wheres 让条件查询读起来更像自然语言;

登录自动重定向提升了用户体验;

用 PHP Attributes 声明资源,让模型与资源的衔接更顺畅。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 0:02:18

记一次 Kubebuilder Operator 开发中的 CRD 注解超限问题

概念厘清:注解、CSA 与三路合并的来龙去脉要理解这个问题,需要先弄清楚几个关键概念。1. annotations 是什么?在 Kubernetes 中,注解是与对象关联的键值对,用于存储非标识性的元数据。这些信息可以被工具、库或控制器读…

作者头像 李华
网站建设 2026/4/23 17:48:02

约翰·伯格的资产配置理论

约翰伯格的资产配置理论 关键词:约翰伯格、资产配置理论、投资组合、风险分散、长期投资 摘要:本文深入探讨了约翰伯格的资产配置理论。该理论强调通过合理的资产配置实现风险分散和长期稳定的投资回报。文章首先介绍了理论提出的背景,包括目的、预期读者和文档结构等内容。…

作者头像 李华
网站建设 2026/4/20 21:34:46

命越算越薄?一张电器说明书给你讲透唯物主义命理观

【CSDN 独家】命越算越薄?一张电器说明书给你讲透唯物主义命理观扔掉“天机不可泄露”的玄学外衣,用程序员思维解码命运的底层逻辑。关键词:命理、唯物主义、心理学、程序员思维、决策陷阱 预计阅读:6分钟开场:程序员买…

作者头像 李华
网站建设 2026/4/20 21:34:46

【课程设计/毕业设计】基于springboot的人力资源管理系统的设计与实现员工个人信息修改、请假、员工 的薪资管理、考勤管理、社保管理【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/23 11:26:44

Java计算机毕设之基于 SpringBoot 的人事人力资源管理系统设计与实现基于springboot的人力资源管理系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/24 8:09:53

Spring Cloud Alibaba + Dubbo

在微服务世界里,服务间的调用就像小伙伴之间传纸条。你可以直接跑过去,也可以用 Dubbo——微服务界的“极速传声筒”,帮你瞬间把消息传到对方手里,还保证安全可靠。 本文将从 Dubbo 的原理、配置、使用场景到实战经验进行全面解析…

作者头像 李华