欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP的new static和new self的区别与使用

程序员文章站 2023-10-20 13:35:54
下面我们举个栗子: class father { public static function getself() { return new self();...

下面我们举个栗子:

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()); // father
echo get_class(son::getstatic()); // son
echo get_class(father::getself()); // father
echo get_class(father::getstatic()); // father

new self

这里面注意这一行 get_class(son::getstatic()); 返回的是 son 这个 class, 可以总结如下:
self 返回的是 new self 中关键字 new 所在的类中,比如这里例子的 :

public static function getself() {
  return new self(); // new 关键字在 father 这里
}

始终返回 father。

new static

static 则上面的基础上,更聪明一点点:static 会返回执行 new static() 的类,比如 son 执行 get_class(son::getstatic()) 返回的是 son, father 执行 get_class(father::getstatic()) 返回的是 father

而在没有继承的情况下,可以认为 new self 和 new static 是返回相同的结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。