获取子类名而不通过参数传递值

时间:2014-01-27 18:03:11

标签: php oop

这个问题很难问,因为它似乎回答了。

我有一个在抽象类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  
}

2 个答案:

答案 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()

之间的差异