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 和 HTML
Oct 09 PHP
如何利用php+mysql保存和输出文件
Oct 09 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
Apr 19 PHP
linux下安装php的memcached客户端
Aug 03 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
php绘图之在图片上写中文和英文的方法
Jan 24 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
浅析php如何实现App常用的秒发功能
Aug 03 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
PHP7数组的底层实现示例
Aug 25 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
2006/12/14 PHP
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
php接口和抽象类使用示例详解
2014/03/02 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
Python中装饰器的一个妙用
2015/02/08 Python
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
python中import与from方法总结(推荐)
2019/03/21 Python
解决Django连接db遇到的问题
2019/08/29 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
Python requests获取网页常用方法解析
2020/02/20 Python
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
如何在Shell脚本中使用函数
2015/09/06 面试题
工程力学专业自荐信范文
2014/03/17 职场文书
营销学习心得体会
2014/09/12 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python