为什么 Laravel Collection 类的方法每次都返回一个新实例?

因为业务上一个bug,花了很长时间,最后定位到代码上有一个地方使用 collection 时没有使用链式调用,几个 collection 方法没起效,从而引起业务逻辑出错。

这个问题,首先是我自己问题,没认真看文档。只是大概看了一下 collection 有什么方法,就以为用的时候再看文档就行了。没看到 colleciton 文档中有提到:

一般来说,集合是不可改变的,这意味着每个 Collection 方法都会返回一个全新的 Collection 实例。

实际上 collection 大部分方法都是返回一个全新实例,有少量方法才是返回 this ,例如 transform,add,put,forget,prepend,push 方法。

我暂时无法理解为什么返回一个全新实例,为什么不似普通类一样返回 this,文档就说了一句一般来说,集合是不可改变的,也没说原理。

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!