当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-24 14:25:13 浏览: 评论:0 

这篇文章主要介绍了PHP的new static和new self的区别与使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

下面我们举个栗子:

  1. class Father { 
  2.   public static function getSelf() { 
  3.     return new self(); 
  4.   } 
  5.  
  6.   public static function getStatic() { 
  7.     return new static(); 
  8.   } 
  9.  
  10. class Son extends Father {} 
  11.  
  12. echo get_class(Son::getSelf()); // Father 
  13. echo get_class(Son::getStatic()); // Son 
  14. echo get_class(Father::getSelf()); // Father 
  15. echo get_class(Father::getStatic()); // Father 
  16. new self 

这里面注意这一行 get_class(Son::getStatic()); 返回的是 Son 这个 class, 可以总结如下:

self 返回的是 new self 中关键字 new 所在的类中,比如这里例子的 :

  1. public static function getSelf() { 
  2.   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 是返回相同的结果。

Tags: new static self

分享到: