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
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
destoon常用的安全设置概述
Jun 21 PHP
PHP操作MySQL事务实例
Nov 05 PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
PHP编程基本语法快速入门手册
Jan 07 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 PHP
Yii2框架类自动加载机制实例分析
May 02 PHP
php微信公众号开发之欢迎老朋友
Oct 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中的函数嵌套层数限制分析
2011/06/13 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
JavaScript 特殊字符
2007/04/05 Javascript
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
基于JQuery的多标签实现代码
2012/09/19 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
python机器学习实战之K均值聚类
2017/12/20 Python
python 字符串和整数的转换方法
2018/06/25 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
建材业务员岗位职责
2013/12/08 职场文书
医疗器械售后服务承诺书
2014/05/21 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
民主生活会意见
2015/06/05 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
运动会通讯稿200字
2015/07/20 职场文书
Win11更新失败并提示0xc1900101
2022/04/19 数码科技
python 单机五子棋对战游戏
2022/04/28 Python