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 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
php程序之die调试法 快速解决错误
Sep 17 PHP
PHP垃圾回收机制简单说明
Jul 22 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
php中的PHP_EOL换行符详细解析
Oct 26 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
PHP实现简易blog的制作
Oct 24 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
PHP实现的超长文本分页显示功能示例
Jun 04 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
php判断IP地址是否在多个IP段内
Aug 18 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多进程编程实例
2014/10/15 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
Windows下为Python安装Matplotlib模块
2015/11/06 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
python怎么判断模块安装完成
2020/06/19 Python
python中pdb模块实例用法
2021/01/15 Python
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
婚纱摄影师求职信范文
2014/04/17 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
导师就业推荐信范文
2014/05/22 职场文书
人事专员岗位说明书
2014/07/29 职场文书
远程培训的心得体会
2014/09/01 职场文书
介绍信模板
2015/01/31 职场文书
公司酒会主持词
2015/07/02 职场文书
2019广播稿怎么写
2019/04/17 职场文书
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA
docker-compose部署Yapi的方法
2022/04/08 Servers