这个问题很难问,因为它似乎回答了。
我有一个在抽象类parent{}
中声明的方法,它在子类foo{}
此方法需要当前当前的类名,即foo
才能工作,那么如何在不通过参数的情况下获取此名称?
abstract class parent{
public function init(){
echo "I am running from class ....";
// I want this to say, that is it running from any class that is extending it.
}
}
这是子类,只能拥有一个用户名;
class foo extends parent{
echo $this->init();
// I could pass the class name through the argument, but I am looking for other alternatives
}
答案 0 :(得分:5)
echo "I am running from class " . get_class($this);
__CLASS__
是声明类(您正在使用它的类),get_class
将获得所提供对象的具体类。因此get_class($this)
将返回与__CLASS__
或其子类之一相同的值。
答案 1 :(得分:1)
@sroes有答案,但您的代码示例可能是:
abstract class parentclass{
public function init(){
echo "I am running from class ....";
echo __CLASS__;
echo ' But I am ' . get_class($this);
}
}
class foo extends parentclass{
}
$f = new foo();
$f->init();
显示const CLASS 和get_class()
之间的差异