代码
<?php
class A {
public static $count = 1;
public static function func() {
echo __METHOD__,' count: ',self::$count,PHP_EOL;
}
}
class B extends A {
public static $count = 2;
// public static function func() {
// echo __METHOD__,' count: ',self::$count,PHP_EOL;
// }
}
B::func();
A::func();
结果
A::func count: 1
A::func count: 1
说明
从示例来看,php是允许覆写静态变量的,覆写静态方法也可以(去掉注释)。只是在运行时,如果发现本类中没有的方法,就会去父类中找,但是父类中用了self,self的变量就在方法所在的类中直接取,而不会回溯到调用方法的类中去找。