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中常用编辑器推荐
Jan 02 PHP
c#中的实现php中的preg_replace
Dec 21 PHP
php下正则来匹配dede模板标签的代码
Aug 21 PHP
zend framework多模块多布局配置
Feb 26 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
php全角字符转换为半角函数
Feb 07 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
浅谈PHP各环境下的伪静态配置
Mar 13 PHP
PHP利用DWZ.CN服务生成短网址
Aug 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乱码问题
2012/03/25 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
浅谈python3中input输入的使用
2019/08/02 Python
如何基于python实现脚本加密
2019/12/28 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
财务管理职业生涯规划书
2014/02/26 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
大学新闻系自荐书
2014/05/31 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书