PHP的new static和new self不同在哪?使用要注意啥?
Admin 2021-12-02 群英技术资讯 426 次浏览
PHP的new static和new self不同在哪?一些PHP新手可能对new static和new self的区别不是很清楚吗,对此本文就通过一个例子给大家介绍一下两者的不同的,以及使用要注意的问题。那么感兴趣的朋友就继续往下看吧。
下面我们举个栗子:
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的new static和new self不同在哪应该都清楚了吧,上述示例有一定的借鉴价值,有需要的朋友可以参考,希望对大家学习PHP有帮助,想要了解更多PHP的内容,大家可以关注群英网络其它相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
太空船操作符又被称为组合比较运算符或者结合比较符,它使用符号 <=> 表示,该操作符可以用于实现对两个变量的比较(不限制于数值类型的数据)。
implode使用一个字符串将数组变成字符串<?php$array=array('lastname','email','phone');$comma_separated=implode(",",$array);echo$comma_separated;//lastname,email,phone//Emptystringwhenusing
文件读写是程序开发中最基本的操作之一,在实际开发中经常需要从文件中读取数据,或者向文件中写人数据;所以掌握文件读写操作是十分重要的。今天我们先来了解一下从文件中读取一个字符,如何逐个字符读取文件。在之后的文章中我们来慢慢介绍其他操作。
这篇文章主要介绍了Laravel5.1框架路由分组用法,结合实例形式分析了laravel5.1框架路由分组基本功能与相关共享属性使用技巧,需要的朋友可以参考下
这篇文章给大家分享的是关于PHP枚举类型的管理的内容,下面介绍了几种PHP枚举类型的常见管理方式以及示例,小编觉得是比较实用的,因此分享给大家,下面我们就一起来了解一下吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008