PHP get_class的功能

Sex*_*ast 0 php

任何人都可以解释为什么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;
Run Code Online (Sandbox Code Playgroud)

lan*_*nzz 5

文档中似乎很好地解释了,但它是:

get_class($instance)返回$instance实例的类,无论你在哪里调用它; get_class($this)表现方式相同,返回类$this.

get_class()返回定义调用它的方法的类,因此它bar在您的示例中返回,因为它__construct()是定义的位置(即使您通过继承调用它).