這里有一個重要的概念就是scope辟汰,如果子類沒有overrided父類的屬性或方法弥鹦,那么那個屬性或方法的scope就還是父類的。
樣例代碼如下:
<?php
class A {
public static $v;
public static function setV($value) {static::$v = $value;}
public static function setV2($value) {self::$v = $value;}
}
class B extends A{
public static $v;
};
class C extends A{};
class D extends B{};
A::setV('a');
C::setV('c');
B::setV('b');
var_dump(B::$v);
var_dump(A::$v);
var_dump(C::$v);
var_dump(D::$v);
// output:
// string(1) "b"
// string(1) "c"
// string(1) "c"
// string(1) "b"
在這里货徙,即使是用C::setV()
芍瑞,改變的還是A的屬性晨仑。因為C的$v
就是A的$v
。