0

谁能解释为什么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;
4

1 回答 1

5

在文档中似乎很好地解释了,但这里是:

get_class($instance)返回$instance实例的类,不管你在哪里调用它;get_class($this)行为方式相同,返回$this.

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

于 2012-09-12T14:42:28.933 回答