上級 › staticを付け忘れると、インスタンス間でプロパティが共有されない › パターン4
staticを付け忘れると、インスタンス間でプロパティが共有されない
インスタンスをまたいで値を共有したい場合はstaticプロパティが必要です。
1 <?php 2 class Cache { 3 public _________int $hits = 0; ^ 4 public function hit() { 5 self::$hits++; 6 } 7 } 8 $a = new Cache(); 9 $b = new Cache(); 10 $a->hit(); 11 $b->hit(); 12 $b->hit(); 13 echo Cache::$hits;
Fatal error: Uncaught Error: Access to undeclared static property Cache::$hits in main.php:5
空欄を埋めて実行を通す
staticを付けずに宣言すると$hitsはインスタンスごとの通常のプロパティになります。それをself::$hitsという静的な書き方でアクセスしようとすると致命的エラーになります。
次の問題