在此我首先运行一段小程序,先不去直接讲出静态变量的继承在PHP中语法规则,for example:
class Base{
public $a;
public static $b;
}
class Derived extends Base{
public function __construct(){
$this->a=0;
parent::$b=0;
}
public function f(){
$this->a++;
parent::$b++;
}
}
$D1=new Derived();
$D2=new Derived();
$D1->f();
echo $D1->a." ".Derived::$b."<br>";
$D2->f();
echo $D2->a." ".Derived::$b."<br>";
得出的结果是,如下:
在此有的人可能会好奇,为什么Derived::$b得出来的结果是:2,而不是:1?
由上面这个小例子,可以得出原因:当一个子类,继承了父类中的静态变量之后,在实例化不同的对象时,所访问原来的那个静态变量所指向的地址是同一个地址。而不会因为新的实例化对象,从而开辟一段新的地址给这个变量。