Dondariadmin (トーク | 投稿記録) (ページの作成:「==スーパークラスのstaticなメンバ変数の挙動== 基底クラスのstaticメンバ変数を変更すると、すべての継承クラスに影響してしま...」) |
Dondariadmin (トーク | 投稿記録) |
||
32行目: | 32行目: | ||
$obj_a->printValue(); // print "NEW value" ...先にインスタンス化されていてもstatic変数は影響を受ける。 | $obj_a->printValue(); // print "NEW value" ...先にインスタンス化されていてもstatic変数は影響を受ける。 | ||
+ | |||
+ | [[Category:PHP]] |
基底クラスの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