为什么只有少数PHP数组函数在ArrayObject类中作为方法可用?例如asort()可用,但walk()许多其他不可用.
$s= new ArrayObject(array(1,3,4,5,6,4));
$x= $s->asort(); //implemented
$x= $s->sum(); //not implemented
$x= array_sum($s->getArrayCopy()); //not an OO manner!
//sum is an example, consider:array_map,array_walk,array_merge ....
Run Code Online (Sandbox Code Playgroud)
请注意,我已仔细阅读文档.我的问题是为什么php团队只是在ArrayObject类中嵌入了一个数组函数的子集(应该封装与数组相关的要求).这不是一个糟糕的设计吗?为什么我们应该扩展这个类并再次在这个类中嵌入几十个函数?是合理的吗?
想想一下对象的集合应该能够原生轻松地完成.如果我有一系列书籍,我希望能够对它们进行排序,我希望能够在某个位置获得一个,我希望能够遍历它们,等等.我不想要的是能够将它们全部添加起来.如果我将sum函数添加到该对象,则意味着该对象的每个实例也将具有sum函数 - 大多数情况下是一个奇怪且意外的用例.
ArrayObject从很多方面来说,它比传统的数组更接近于PHP的array管理.我相信它应该更快因为这个.