加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

区别在PHP中new self和 new static

发布时间:2022-06-24 13:36:03 所属栏目:PHP教程 来源:互联网
导读: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() {
  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())); // Father
  
  var_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则是由调用者决定的。
 
 

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!