Функциональность 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 экземпляра $instance , независимо от того, где вы его вызываете; get_class($this) ведет себя одинаково, возвращая класс $this .

get_class() возвращает класс, в котором метод, вызывающий его, определяется , поэтому он возвращает bar в вашем примере, поскольку именно здесь определен __construct() (даже если вы вызываете его через наследование).