我已经用 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)
