我想使用get_class($var)
来显示对象的类。最好的方法是什么?我的代码目前是:
abstract class userCharacter {
var $cName;
var $cLevel = 0;
var $cHP = 50;
var $cMP = 20;
function __construct($n) {
$this->cName = $n;
}
function showDetails() {
echo $this->cName . "<br />";
echo "Level: " . $this->cLevel . "<br />";
echo "HP: " . $this->cHP . "<br />";
echo "MP: " . $this->cMP . "<br />";
}
} // userCharacter
class warrior extends userCharacter {
} // warrior
我用:
创建对象$charOne = new warrior($name);
我想要做的是在showDetails()
类的userCharacter
函数中有一行类似于:
echo "Class: " . get_class($charOne) . "<br />";
但是,我很确定这不起作用,因为$charOne
变量不在正确的范围内。
我想我需要用以下内容声明$charOne
:
global $charOne = new warrior($name);
这会有用吗?如果没有,如果可能的话,最好的方法是什么?
答案 0 :(得分:1)
你想要
echo get_class($this) ;
在运行时,实际的类将被计算出来。这就是多态性的好处。
然而,更好的是,你想做这样的事情:
echo $this->getClassDisplayName();
然后为每个子类编写该函数。
或者,基类可以具有这种类型的函数:
function getClassDisplayName()
{
return ($this->classDisplayName == "" ? getClass($this) : $this->classDisplayName );
}
然后在子类的构造函数中:
public __construct()
{
$this->classDisplayName = "The Mighty Warriors of Azgoth";
}