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

学院君

学院君 has written 554 articles

资深PHP工程师,Laravel学院院长