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


Posted in PHP onNovember 27, 2019

下面我们举个栗子:

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 是返回相同的结果。

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

PHP 相关文章推荐
PHP远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
国外PHP程序员的13个好习惯小结
Feb 20 PHP
使用迭代器 遍历文件信息的详解
Jun 08 PHP
深入php处理整数函数的详解
Jun 09 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
PHP+MySQL之Insert Into数据插入用法分析
Sep 27 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
php微信公众号开发之翻页查询
Oct 20 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 #PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 #PHP
php 使用expat方式解析xml文件操作示例
Nov 26 #PHP
thinkphp框架类库扩展操作示例
Nov 26 #PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 #PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 #PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 #PHP
You might like
通过PHP CLI实现简单的数据库实时监控调度
2009/07/01 PHP
php 正则表达式小结
2009/08/31 PHP
php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
2011/01/07 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
jqgrid 表格数据导出实例
2013/11/21 Javascript
初始Nodejs
2014/11/08 NodeJs
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
2016/12/29 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
js读取本地文件的实例
2017/12/22 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
Python实现简易Web爬虫详解
2018/01/03 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
使用python去除图片白色像素的实例
2019/12/12 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
银行介绍信范文
2014/01/10 职场文书
消防宣传口号
2014/06/16 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
2015年党员承诺书
2015/01/21 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS