我正在学习PHP5 (我上一次检查PHP是在PHP4的日子里),我很高兴地看到PHP5 OO比PHP4 OO更像Java,但仍然有一个问题让我感到非常不舒服,因为我的Java语言背景:数组。
我正在阅读“专业PHP6”(Wrox),它显示了它自己的集合实现。我还发现了其他的类,比如http://aheimlich.dreamhosters.com/generic-collections/Collection.phps中基于SPL的那个类。我还发现在SPL (ArrayObject)中有某种类型的集合
然而,我很惊讶,因为我并没有真正看到人们在PHP中使用集合,他们似乎更喜欢数组。
那么,在PHP语言中使用集合,就像人们在Java语言中使用ArrayList而不是基本数组一样,这不是一个好主意吗?毕竟,php数组并不真正像java数组。
发布于 2009-10-16 20:35:57
Java中的集合非常有意义,因为它是一种强类型语言。有一组“汽车”和另一组“摩托车”是有意义的。
然而,在PHP中,由于动态类型的性质,牺牲集合的正式性是很常见的。数组足以用作各种对象类型(汽车、摩托车等)的通用容器。此外,额外的好处来自于数组可以非常容易地变化(当缺少适当的错误检查时,这有时可能是一个很大的缺点)。
我有Java背景,我发现在PHP中使用集合设计模式不会带来太多好处(没有多线程、没有内存分配优化、没有迭代器等)。
如果您正在寻找这些优点中的任何一个,最好是在数组周围构造一个包装器类,实现每个特性(迭代器等)。按菜单点菜。
发布于 2011-08-23 06:33:23
我非常喜欢PHP中的集合对象,它们可以用来增加类型安全性,实现易于使用的搜索、排序和操作功能,并代表正确的OO方法,而不是使用数组和大量有用的但过程式的函数,这些函数在源代码中以不同的模式对它们进行操作。
我们有用于各种目的的各种集合,所有这些集合都是整洁地继承的,以促进类型安全、一致的编码标准和高水平的代码重用。
但是最终结果,它们都是数组内部的!
我想这真的归结为选择,但在我的面向对象的世界中,我喜欢在基类中保留容易重复的代码段,例如排序和搜索算法,并且我发现对象表示法更具自我文档化。
发布于 2009-10-16 20:36:26
PHP数组是关联的.它们比Java的数组强大得多,并且包含List<>和Map<>的许多功能。
你说的“好主意”是什么意思?它们是不同的工具,以你使用另一种语言的方式使用另一种语言通常会导致沮丧。
https://stackoverflow.com/questions/1580223
复制相似问题