gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:10:51 25 4
gpt4 key购买 nike

我使用 PHP 编写代码已有一段时间,我对过程函数(尤其是字符串和数组)中的不一致感到比较恼火。

有了对对象的支持,我一直希望 PHP 有一个将数组和字符串作为对象的 native 实现,这样我就可以编写如下代码:

$arr = new Array('foo', 'bar');
$item = $arr->pop();

制作类似数组的对象并不过分困难,但是会对性能造成重大影响。无论如何,它最终会成为数组构造的包装器。

是否有 其他 PHP 应该为面向对象的 PHP 提供的核心对象?

编辑添加:

不是关于如何将数组用作对象;事实上,我特别希望在答案中讨论数组,因为这不是问题的重点。我以数组为例,似乎没有人读过这个问题。我对 其他 核心 PHP 中本应存在的类/对象感兴趣。

最佳答案

编辑:在 PHP 6 中可以使用 aoutoboxing是编译器在原始(基本)类型和它们相应的对象包装类(例如,array 和 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)

关于php - 面向对象的 PHP 中缺少哪些基本对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5097062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com