いくつかのコードから始めましょう。
class Super {
protected static $color;
public static function setColor($color){
self::$color = $color;
}
public static function getColor() {
return self::$color;
}
}
class ChildA extends Super { }
class ChildB extends Super { }
ChildA::setColor('red');
ChildB::setColor('green');
echo ChildA::getColor();
echo ChildB::getColor();
PHP 5.3 のstaticキーワードを使用した後期静的バインドは、静的メソッドでうまく機能するため、静的変数に対しても同じ魔法がかかると思いました。そうですね、そうではないようです。上記の例では、最初に予想したように「赤」と「緑」が出力されず、「緑」と「緑」が出力されます。メソッドでは機能するのに、変数では機能しないのはなぜですか? 私が期待した効果を達成する他の方法はありますか?