PHP"对象"类

时间:2011-04-18 00:15:23

标签: php oop namespaces

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

我头脑中的第一个选项是使用命名空间,所以我的php“object”类和我之间没有任何并发​​性。问题是如果我想使用两个“Object”类,我需要稍后在我的代码中重命名其中一个。

namespace System
{
    class Object
    {

    }
}

...

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

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

class ObjectD
{

}

你有更好的选择吗?

2 个答案:

答案 0 :(得分:2)

您可以使用synonym,例如EntityItem

哦,顺便说一下,main / base / root对象类叫做stdClass

编辑:我认为绝对不可能在任何地方使用'对象'。

请考虑以下事项:

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

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

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

如果我必须分享我的经验,那么您应该始终为您的全局命名内容提供有效的前缀。我最近才意识到这是我的一个小宠物项目。

编辑3:刚尝试过:

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
)

编辑4: 有趣的是,这甚至无法使用命名空间。

答案 1 :(得分:1)

使用保留字总是会产生问题。特别是如果稍后其他程序员会在你的项目上工作,你可能会让程序员陷入不眠之夜。

我会去;

class ObjectD
{

}

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

我还想补充一点,如果您将在大型项目中使用它,请确保您将花费大量时间进行调试,最终您将需要更改代码。