PHP "Object" class


PHP "Object" class

我想创建一个名为"Object"的类,以便能够实现"toString()", "equal()"…问题是"object"关键字已经被占用了,我想知道什么是最好的实现。

我想到的第一个选择是使用名称空间,这样我就不会在php的"object"类和我的类之间有任何并发性。问题是,如果我想使用两个"Object"类,我需要在后面的代码中重命名其中一个。

namespace System
{
    class Object
    {
    }
}

use System'Object as Object1;
use object as Object2;

另一种选择是以不同的方式调用它。如果你认为这是最好的选择,你会怎么称呼它?

class ObjectD
{
}

你有更好的选择吗?

您可以使用同义词,例如EntityItem

哦,顺便说一下,主/基/根对象类叫做stdClass

编辑:我认为在任何地方单独使用'object'是绝对不可能的。

考虑以下内容:

$test = new object();
$test = (object) array();

运行上面的代码,PHP如何知道哪个是哪个?

Edit 2:另外,如果我理解正确的话,您想创建自己的对象层次结构。在这种情况下,您应该根据您正在做的事情来命名对象。例如,在Joomla中,有JObject.

如果我必须分享我的经验,你应该总是有一个有效的前缀到你的全局命名的东西。我最近在做我的一个小项目时才意识到这一点。

Edit 3: Just try it:

use System'Object as Object1;
use object as Object2;
class object {
    public $test='aaa';
}
$a=new object();
$b=(object)array('aaa'=>'test');
echo '<pre>';
print_r($a);
print_r($b);
印刷:

object Object
(
    [test] => aaa
)
stdClass Object
(
    [aaa] => test
)

Edit 4:有趣的是,这甚至可以在没有命名空间的情况下工作。

使用保留字总是会产生问题。特别是如果后来有其他程序员来做你的项目,你可能会让程序员彻夜难眠。

我同意;

class ObjectD
{
}

这可能不是你想要的,因为你想使用名字对象,但至少,你会写更少的代码,这是一件好事。

我还想补充一点,如果你要在大项目中使用它,一定要花很多时间调试,最终你会想要改变你的代码。