任何人都可以解释为什么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;
答案 0 :(得分:5)
在documentation中似乎很好地解释了,但这里是:
get_class($instance)
返回$instance
实例的类,无论您在何处调用它; get_class($this)
的行为方式相同,返回$this
的类。
get_class()
返回调用它的方法已定义的类,因此它在您的示例中返回bar
,因为这是定义__construct()
的位置(即使你通过继承来调用它。)