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中new self() 和 new static() 的区别
最新评论
Forex wiki. https://lt.forex-stock-bitcoin-brokers.com
Magnificent items from you, man. I have take note your stuff
Following on from the 3rd March Meetings held by economic de
It is remarkable, rather valuable message dfgdlfg2131.32
一般都会有一个沙盒期的,过了沙盒期就会慢慢放出来
百度不收录是应为是新站的原因吗?
The spike in consumer prices that left inflation at a four-d