我想创建一个名为“Object”的类,以便能够实现“toString()”,“equal()”......问题是“object”关键字已经被采用了,我想知道是什么将是最好的实施。
我头脑中的第一个选项是使用命名空间,所以我的php“object”类和我之间没有任何并发性。问题是如果我想使用两个“Object”类,我需要稍后在我的代码中重命名其中一个。
namespace System
{
class Object
{
}
}
...
use System\Object as Object1;
use object as Object2;
另一种选择是以不同方式调用它。如果你认为它是最好的选择,你会怎么称呼它?
class ObjectD
{
}
你有更好的选择吗?
答案 0 :(得分:2)
您可以使用synonym,例如Entity
或Item
。
哦,顺便说一下,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
{
}
这可能不是您想要的,因为您想使用名称对象,但至少,您将编写更少的代码,这是一件好事。
我还想补充一点,如果您将在大型项目中使用它,请确保您将花费大量时间进行调试,最终您将需要更改代码。