PHP get_class的功能

时间:2012-09-12 14:38:33

标签: 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;

1 个答案:

答案 0 :(得分:5)

documentation中似乎很好地解释了,但这里是:

get_class($instance)返回$instance实例的类,无论您在何处调用它; get_class($this)的行为方式相同,返回$this的类。

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