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实现小型站点广告管理(修正版)
Oct 09 PHP
php读取mysql的简单实例
Jan 15 PHP
php计算两个文件相对路径的方法
Mar 14 PHP
PHP中实现crontab代码分享
Mar 26 PHP
php实现专业获取网站SEO信息类实例
Apr 02 PHP
Thinkphp+smarty+uploadify实现无刷新上传
Jul 30 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
利用php生成验证码
Feb 23 PHP
PHP中递归的实现实例详解
Nov 14 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
Jun 20 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获取远程图片体积大小的实例
2013/11/12 PHP
PHP类型约束用法示例
2016/09/28 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
原生js实现购物车
2020/09/23 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
python脚本实现验证码识别
2018/06/07 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
python Tkinter版学生管理系统
2019/02/20 Python
pandas的排序和排名的具体使用
2019/07/31 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
简单了解python元组tuple相关原理
2019/12/02 Python
什么是python类属性
2020/06/10 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
小学英语教学反思案例
2014/02/04 职场文书
万能检讨书2000字
2014/10/17 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
个人催款函范文
2015/06/23 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
导游词之山东孔庙
2019/11/04 职场文书
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis