我想创建一个名为"Object"的类,以便能够实现"toString()", "equal()"…问题是"object"关键字已经被占用了,我想知道什么是最好的实现。
我想到的第一个选择是使用名称空间,这样我就不会在php的"object"类和我的类之间有任何并发性。问题是,如果我想使用两个"Object"类,我需要在后面的代码中重命名其中一个。
namespace System
{
class Object
{
}
}
…
use System'Object as Object1;
use object as Object2;
另一种选择是以不同的方式调用它。如果你认为这是最好的选择,你会怎么称呼它?
class ObjectD
{
}
你有更好的选择吗?
您可以使用同义词,例如Entity
或Item
。
哦,顺便说一下,主/基/根对象类叫做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
{
}
这可能不是你想要的,因为你想使用名字对象,但至少,你会写更少的代码,这是一件好事。
我还想补充一点,如果你要在大项目中使用它,一定要花很多时间调试,最终你会想要改变你的代码。