我已经用 PHP编写了一段时间,并且我对程序函数(特别是字符串和数组)中的不一致性感到相对恼火. 有了对象的支持,我一直希望PHP有一个本机实现的Arrays和Strings作为对象,这样我就可以编
有了对象的支持,我一直希望PHP有一个本机实现的Arrays和Strings作为对象,这样我就可以编写如下代码:
$arr = new Array('foo', 'bar'); $item = $arr->pop();
制作类似于数组的对象并不是一件容易的事,但是,它的性能会受到很大影响.无论如何,它最终将成为数组结构的包装器.
PHP面向对象PHP应该有其他核心对象吗?
编辑添加:
这不是关于如何使用数组作为对象;事实上,我特别不希望在答案中讨论数组,因为这不是问题所在.我使用数组作为例子,似乎没有人读过这个问题.我对其他应该存在于核心PHP中的类/对象感兴趣.
编辑:在PHP 6中可以使用 aoutoboxing
是编译器在原始(基本)类型与其对应的对象包装类(例如,数组和ArrayObject,double和Double等)之间进行的自动转换.
会有一个名为__autobox()的特殊函数
<?php function __autobox($value) { return ... /* some object */ } ?>
例如 :
function __autobox($value) { switch(gettype($value)) { case 'integer': return new MyIntegerObject($value); break; case 'array': return new ArrayObject($value); break; default: $stdObj = new stdClass(); $stdObj->value = $value; return $stdObj; break; } }
示例使用:
var_dump(5 == new MyInteger(5)); bool(true)