Laravel 5.4 新特性系列 —— 新增对集合元素的高阶消息传递支持
Laravel 5.4 正处于开发进行时,随着新版本代码的合并,一些新的功能特性也随之泄露。其中之一就是对集合进行高阶消息传递的支持。所谓高阶消息传递(Higher Order Messaging)实际上是一种设计模式,用于以纯面向对象的方式对对象集合进行查询和操作(关于高阶消息传递,参考国外这篇文章)。
展示新功能特性的最好方式莫过于通过实例代码,假设你有一个集合并且想要对其中每个元素进行操作:
$invoices->each(function($invoice) { $invoice->pay(); });
通过新的特性你可以将上述代码简化如下:
$invoices->each->pay();
另外一个演示示例如下:
$employees->reject(function($employee) { return $employee->retired; })->each(function($employee) { $employee->sendPayment(); });
同样,通过5.4的新功能我们可以将其简化如下:
$employees->reject->retired->each->sendPayment();
是不是感觉很酷?关于其实现原理可参考代码提交记录:https://github.com/laravel/framework/pull/16267/files
声明:本文整理翻译自https://laravel-news.com
8 Comments
5.5的新特性视频教程都有了 http://www.sucaihuo.com/video/293.html