![](http://freedede.oss-cn-hangzhou.aliyuncs.com/2020/9/iaQJvu.jpg?x-oss-process=style/syzhong)
PHP中new self() 和 new static() 的区别
new static() 是在php5.3版本引入的新特性
new static 和 new self() 都是 new 一个对象
直接看代码
class Father
{
public function getNewFather()
{
return new self();
}
public function getNewCaller()
{
return new static();
}
}
$f = new Father();
var_dump(get_class($f->getNewFather())); // Father
var_dump(get_class($f->getNewCaller())); // Father
getNewFather和getNewCaller 都是返回的 Father 这个实列
到这里貌似 new self() 还是 new static() 是没有区别的
接着看下面的示例
class Sun1 extends Father{
}
$sun1 = new Sun1();
var_dump($sun1->getNewFather()); // object(Father)#4 (0) { }
var_dump($sun1->getNewCaller()); // object(Sun1)#4 (0) { }
getNewFather 返回的是Father的实列,
getNewCaller 返回的是调用者的实列
他们的区别只有在继承中才能体现出来、如果没有任何继承、那么二者没有任何区别
new self() 返回的实列是不会变的,无论谁去调用,都返回的一个类的实列,
new static则是由调用者决定的。
推荐教程:《PHP视频教程》
以上就是区别PHP中new self() 和 new static()的详细内容,更多请关注爱上源码网其它相关文章!
微信
分享
相关标签:new self() new static()
本文转载于:liqingbo,如有侵犯,请联系916990011@qq.com删除
- 上一篇:在php 中使用PDO MySQL的扩展
- 下一篇:处理PHP strtotime的BUG
相关文章
相关视频
- NodeJs能实现PHP所有的功能吗?
- jQuery里面能不能写PHP方法?
- 详解PHP中self关键字
- PHP7 内核之 FAST_ZPP 详解
- 区别PHP中new self() 和 new st...
- PhpSpreadsheet是什么
- ThinkPHP6.0 视图
- ThinkPHP6.0 请求
本文有爱上源码下载完入驻作者发布,如果对您版权造成侵害,可以联系本站站长管理进行维权删除,本站收到维权24小时内进行处理,谢谢您关注23ym.cn!
本站分享大量程序员技术文章以及对编程开发的初级入门教程,包括图文讲解笔记和高清视频下载~ |