中級 › staticプロパティを self:: なしで参照すると別の変数として扱われる › パターン1
staticプロパティを self:: なしで参照すると別の変数として扱われる
クラス内からstaticプロパティにアクセスするには self::$prop のように書く必要があります。
1 <?php 2 class Counter { 3 public static int $count = 0; 4 public function increment() { 5 ______________++; ^ 6 } 7 } 8 $c = new Counter(); 9 $c->increment(); 10 $c->increment(); 11 echo Counter::$count;
出力:
Warning: Undefined variable $count in main.php on line 5
Warning: Undefined variable $count in main.php on line 5
0期待: 2 (Warningが出るだけで実行は止まりません)
空欄を埋めて実行を通す
self::を付けずに$countと書くと、staticプロパティとは無関係のローカル変数として扱われ、宣言も代入もされていないためWarningになります。Counter::$countは0のまま変わりません。
次の問題