中級 › staticプロパティを self:: なしで参照すると別の変数として扱われる › パターン3
staticプロパティを self:: なしで参照すると別の変数として扱われる
クラス内からstaticプロパティにアクセスするには self::$prop のように書く必要があります。
1 <?php 2 class Registry { 3 public static array $items = []; 4 public function register($item) { 5 _______________[] = $item; ^ 6 } 7 } 8 $r = new Registry(); 9 $r->register("a"); 10 echo count(Registry::$items);
出力: 0期待: 1 (Warningすら出ません。配列への追加はエラーなし・警告なしで通ってしまいます)
空欄を埋めて実行を通す
self::$itemsではなく$itemsと書くと、宣言されていないローカル配列への追加になります。スカラーの$count++と違い、配列への$items[] = ...という追加はPHPが警告すら出さずに黙って通してしまうため、$count++の例よりさらに気づきにくいバグになります。
次の問題