有人能解释为什么get_class
函数会返回以下不同的值吗?具体来说,当它在基类中被调用时,以及当它在派生类中被调用的时候,它应该做什么?
abstract class bar {
public function __construct()
{
var_dump(get_class($this)); //prints 'foo'
var_dump(get_class()); // prints 'bar'
}
}
class foo extends bar {
}
new foo;
文档中似乎对此进行了很好的解释,但它是:
get_class($instance)
返回$instance
实例的类,而不管您在哪里调用它;get_class($this)
的行为与此相同,返回$this
的类。
get_class()
返回调用它的方法是定义的的类,因此它在您的示例中返回bar
,因为__construct()
就是在这里定义的(即使您是通过继承调用它)。