【发布时间】:2011-02-23 21:02:14
【问题描述】:
我用 PHP 编码已经有一段时间了,我对过程函数(尤其是字符串和数组)的不一致感到比较恼火。
有了对对象的支持,我一直希望 PHP 能够将数组和字符串作为对象进行本机实现,这样我就可以编写如下代码:
$arr = new Array('foo', 'bar');
$item = $arr->pop();
制作一个类似数组的对象并不太难,但是会显着降低性能。无论如何,它最终都会成为数组构造的包装器。
对于面向对象的 PHP,是否有 其他 PHP 应该具有的核心对象?
编辑添加:
这不是关于如何将数组用作对象;事实上,我确实 不 想要在答案中讨论数组,因为这不是问题所在。我以数组为例,似乎没有人读过这个问题。我对应该存在于核心 PHP 中的其他类/对象感兴趣。
【问题讨论】:
-
至少对于数组示例有 ArrayObject 和 SplStack。也许即将到来的 SplString 将添加类似的功能和字符串的方法 API。但是除非函数成为第一类对象,否则我认为将所有基本类型都表示为对象的用处不大。 (如果遵循 Python 而不是模仿 Java OOP 特性,PHP 会更好。)
-
看看SPL。特异性,
ArrayObject。 -
我不关心基本对象。我宁愿看到支持将对象转换为其他基本类型(例如整数、浮点数、布尔值等)。否则谁在乎你是否有一个 SPLInt,如果你不能根据需要默默地转换它......
-
我不明白你为什么需要这个。您可以使用 (object) array(); 将数组转换为对象。但是如果你关心性能而不是你为什么不简单地使用数组作为数组呢?
-
@SODA,不是需要,而是想要。 @Tim Cooper,ArrayObject 缺少大多数高级数组方法(diff、map、intersect 等),所以我认为它是不完整的。