区别PHP中new self() 和 new static()
导读:收集整理的这篇文章主要介绍了区别PHP中new self( 和 new static( ,觉得挺不错的,现在分享给大家,也给大家做个参考。PHP中new self( 和 new static( 的区别new static( 是在Ph...
收集整理的这篇文章主要介绍了区别PHP中new self() 和 new static(),觉得挺不错的,现在分享给大家,也给大家做个参考。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()));
// FatherVAR_dump(get_class($f->
getNewCaller()));
// FathergetNewFather和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()的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 区别PHP中new self() 和 new static()
本文地址: https://pptw.com/jishu/596402.html
