ivm*_*mos 17 php java collections language-comparisons
我正在学习PHP5(上次我检查PHP是在PHP4天)并且我很高兴看到PHP5 OO比PHP4更像Java,但仍有一个问题让我感到非常不舒服,因为我的Java背景:阵列.
我正在阅读"Proffesional PHP6"(Wrox),它显示了自己的Collection实现.我发现了其他类似于http://aheimlich.dreamhosters.com/generic-collections/Collection.phps的基于SPL的文章.我还发现SPL中有某种Collection(ArrayObject)
但是,我很惊讶因为我没有真正看到人们在PHP中使用Collections,他们似乎更喜欢数组.
那么,在PHP中使用Collections就像人们在Java中使用ArrayList而不是基本数组一样,这不是一个好主意吗?毕竟,php数组并不像java数组.
Pra*_*ras 19
Java中的集合很有意义,因为它是一种强类型语言.有一个说"汽车"和另一个"摩托车"的集合是有道理的.
但是,在PHP中,由于动态类型的特性,牺牲集合的形式是很常见的.数组足以用作各种对象类型(汽车,摩托车等)的通用容器.此外,额外的好处来自于数组可以非常容易地变异(当缺少适当的错误检查时,这有时可能是一个很大的缺点).
我来自一个Java的背景,我已经发现,使用PHP中的集合设计模式不买太多的优势的方式(不支持多线程,没有内存分配,没有迭代器等的优化).
如果你正在寻找任何这些优点,最好在数组周围构造一个包装类,单独实现每个功能(迭代器等).
我是PHP中非常专业的集合对象,它们可用于添加类型安全性,易于使用的搜索,排序和操作功能,并表示正确的OO方法,而不是使用数组和大量有用但可操作的程序函数它们在源头上有不同的模式.
我们有各种用于各种目的的集合,它们都巧妙地继承了促进类型安全性,一致的编码标准和高水平的代码重用.
但是ultimatley,他们都是内部阵列!
我认为它真的归结为选择,但在我的面向对象的世界中,我喜欢保留易于重复的代码段,例如基类中的排序和搜索算法,并且我发现对象表示法更加自我记录.
PHP数组是关联的...它们比Java的数组功能强大得多,并且包含了List <>和Map <>的许多功能.
"好主意"是什么意思?它们是不同的工具,使用一种语言就像你使用另一种语言一样,通常会导致挫败感.
| 归档时间: |
|
| 查看次数: |
18589 次 |
| 最近记录: |