基底クラスのstaticメンバ変数を変更すると、すべての継承クラスに影響してしまいます。 特性を把握して使用しないと思わぬところでハマりそうです。
<?php class base { protected static $super_value = "super value\n"; public function printValue() { echo self::$super_value; } } class extClassA extends base { } class extClassB extends base { public function setValue($value) { self::$super_value = $value; } } $obj_a = new extClassA(); $obj_a->printValue(); // print "super value" $obj_b = new extClassB(); $obj_b->printValue(); // print "super value" $obj_b->setValue("NEW value\n"); $obj_b->printValue(); // print "NEW value" $obj_a->printValue(); // print "NEW value" ...先にインスタンス化されていてもstatic変数は影響を受ける。Tweet