date: 2015-09-09 11:06
工作上遇到的问题:
class a{public static $a='1';public static function a(){echo self::$a}
class b exntends a{public static $a='2'}
b::a();
输出是1,
原因在parent self,静态方法要使用static
把class a的self改为static即可
补充,典型的self和static问题
- new static()是在PHP5.3版本中引入的新特性。
- 实验代码
class Father {
public function getNewFather() {
return new self();
}
public function getNewCaller() {
return new static();
}
}
$f = new Father();
print get_class($f->getNewFather());
print get_class($f->getNewCaller());
self 是指父类本身
static 当前调用本身 son extends father father里的function static 就是指自己了