Functionality of PHP get_class


Functionality of PHP get_class

有人能解释为什么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()就是在这里定义的(即使您是通过继承调用它)。