class Father {public static function getSelf() {return new self();}public static function getStatic() {return new static();}}class Son extends Father {}echo get_class(Son::getSelf()); // Fatherecho get_class(Son::getStatic()); // Sonecho get_class(Father::getSelf()); // Fatherecho get_class(Father::getStatic()); // Father
self 返回的是 new self 中关键字 new 所在的类。static 则上面的基础上,更聪明一点点。static 会返回执行 new static() 的类。
这里重点关注第二个 echo get_class(Son::getStatic()); 可以看到它输出的是 Son。在官方文档中,叫做 后期静态绑定 。
