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 相关文章推荐
论坛头像随机变换代码
Oct 09 PHP
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
php遍历CSV类实例
Apr 14 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
详解php用static方法的原因
Sep 12 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 PHP
PHP实现常用排序算法的方法
Feb 05 PHP
php中try catch捕获异常实例详解
Aug 06 PHP
PHP7 标准库修改
Mar 09 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数据库解决方案分析介绍
2015/09/24 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
php微信开发之图片回复功能
2018/06/14 PHP
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
使用graphics.py实现2048小游戏
2015/03/10 Python
用python写的一个wordpress的采集程序
2016/02/27 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
Python3中列表list合并的四种方法
2019/04/19 Python
python视频按帧截取图片工具
2019/07/23 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
企业宣传方案
2014/03/04 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
公司开会通知
2015/04/20 职场文书
加班费申请报告
2015/05/15 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
PyTorch 如何自动计算梯度
2021/05/23 Python
Win10系统下配置Java环境变量
2021/06/13 Java/Android