php -- new self() 和 new static

Posted good good study, day day up !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php -- new self() 和 new static相关的知识,希望对你有一定的参考价值。

看一段摘自网上的代码

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

 

通俗点讲就是:

new self();   在哪个类里面执行的该代码,返回的就是哪个类的对象。如果该代码只写在父类中,即使子类继承自父类,返回的依然是父类的对象。

new static();  哪个类调用的它,返回的就是哪个类的的对象。

 

以上是关于php -- new self() 和 new static的主要内容,如果未能解决你的问题,请参考以下文章

php -- new self() 和 new static

PHP中new static() 和 new self() 的区别

PHP 的 new static 和 new self

PHP中new self()和new static()的区别探究

php 小知识随手记 new self() 和new static()作用和区别

PHP new self()和new static()的区别