php关键字self与static的区别

class A {
  public static function getSelf() {
    return new self();
  }
 
  public static function getStatic() {
    return new static();
  }
}
 
class B extends A {}
 
echo get_class(B::getSelf()); // A
echo get_class(B::getStatic()); // B
echo get_class(A::getStatic()); // A

self:指包含被调用的变量、常量和方法的类;
static:指向当前加载的类,与$this有点类似,从堆内存中提取出来,访问的是当前实例化的类。

你可能感兴趣的:(PHP)