Laravel 5.4 新特性系列 —— 新增对集合元素的高阶消息传递支持

higher-order-messaging 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

上一篇: Laravel 5.3 新特性系列 —— 路由文件及路径修改

下一篇: Laravel 5.7 新特性系列之 resources 目录调整