当前位置 : 主页 > 手机开发 > 其它 >

面向对象PHP中缺少哪些基本对象?

来源:互联网 收集:自由互联 发布时间:2021-06-19
我已经用 PHP编写了一段时间,并且我对程序函数(特别是字符串和数组)中的不一致性感到相对恼火. 有了对象的支持,我一直希望PHP有一个本机实现的Arrays和Strings作为对象,这样我就可以编
我已经用 PHP编写了一段时间,并且我对程序函数(特别是字符串和数组)中的不一致性感到相对恼火.

有了对象的支持,我一直希望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)
网友评论