首页后端开发PHP区别PHP中new self() 和 new static()

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

时间2024-02-02 05:10:03发布访客分类PHP浏览143
导读:收集整理的这篇文章主要介绍了区别PHP中new self( 和 new static( ,觉得挺不错的,现在分享给大家,也给大家做个参考。PHP中new self( 和 new static( 的区别new static( 是在Ph...
收集整理的这篇文章主要介绍了区别PHP中new self() 和 new static(),觉得挺不错的,现在分享给大家,也给大家做个参考。

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

new static() 是在Php5.3版本引入的新特性

new static 和 new self() 都是 new 一个对象

直接看代码

class Father{
    public function getNewFather()    {
            return new self();
    }
      public function getNewCaller()    {
            return new static();
    }
}
      $f = new Father();
      var_dump(get_class($f->
    getNewFather()));
     // FatherVAR_dump(get_class($f->
    getNewCaller()));
     // Father

getNewFather和getNewCaller 都是返回的 Father 这个实列

到这里貌似 new self() 还是 new static() 是没有区别的

接着看下面的示例

class Sun1 extends Father{
  }
      $sun1 = new Sun1();
      var_dump($sun1->
    getNewFather());
 // object(Father)#4 (0) {
 }
    var_dump($sun1->
    getNewCaller());
 // object(Sun1)#4 (0) {
 }
    

getNewFather 返回的是Father的实列,

getNewCaller 返回的是调用者的实列

他们的区别只有在继承中才能体现出来、如果没有任何继承、那么二者没有任何区别

new self() 返回的实列是不会变的,无论谁去调用,都返回的一个类的实列,

new static则是由调用者决定的。

推荐教程:《PHP视频教程》

以上就是区别PHP中new self() 和 new static()的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 区别PHP中new self() 和 new static()
本文地址: https://pptw.com/jishu/596402.html
在php 中使用PDO MySQL的扩展 处理PHP strtotime的BUG

游客 回复需填写必要信息