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 相关文章推荐
html中select语句读取mysql表中内容
Oct 09 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
php foreach正序倒序输出示例代码
Jul 01 PHP
php中$_GET与$_POST过滤sql注入的方法
Nov 03 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
PHP数组函数知识汇总
May 12 PHP
php入门教程之Zend Studio设置与开发实例
Sep 09 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
Nov 28 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 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
jquery时间下拉框小例子
2013/04/15 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
python中的set实现不重复的排序原理
2018/01/24 Python
django用户登录验证的完整示例代码
2019/07/21 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
基于python图像处理API的使用示例
2020/04/03 Python
如何用python免费看美剧
2020/08/11 Python
CSS3自定义滚动条样式的示例代码
2017/08/21 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
《木笛》教学反思
2014/03/01 职场文书
函授生自我鉴定
2014/03/25 职场文书
家长会主持词
2014/03/26 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫