我正在学习 PHP5(上次我检查 PHP 是在 PHP4 的日子里),我很高兴看到 PHP5 OO 比 PHP4 更像 Java,但仍然有一个问题让我感到很不舒服,因为我的 Java 背景:数组。
我正在阅读“Proffesional PHP6”(Wrox),它展示了它自己的 Collection 实现。 我发现了其他类,例如 http://aheimlich.dreamhosters.com/generic-collections/Collection.phps 中的类基于声压级。 我还发现 SPL (ArrayObject) 中有某种 Collection
但是,我很惊讶,因为我并没有真正看到人们在 PHP 中使用集合,他们似乎更喜欢数组。
所以,在 PHP 中使用 Collections 不是一个好主意,就像人们在 Java 中使用 ArrayList 而不是基本数组一样吗?毕竟,php 数组并不像 java 数组。
最佳答案
Java 中的集合很有意义,因为它是一种强类型语言。有一个集合说“汽车”和另一个“摩托车”是有意义的。
然而,在 PHP 中,由于动态类型的性质,牺牲 Collections 的形式是很常见的。数组足以用作各种对象类型(汽车、摩托车等)的通用容器。此外,额外的好处是数组可以很容易地改变(如果没有正确的错误检查,这有时会成为一个很大的缺点)。
我有 Java 背景,我发现在 PHP 中使用集合设计模式并没有带来太多优势(没有多线程、没有内存分配优化、没有迭代器等) .
如果您正在寻找这些优势中的任何一个,最好围绕数组构造一个包装类,实现每个功能(迭代器等)按菜单点菜。
关于PHP 中类 Java 的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1580223/