php static extends

2015/09/09 posted in  脚本
Tags:  #php

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问题

  1. new static()是在PHP5.3版本中引入的新特性。
  2. 实验代码
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 就是指自己了