第10章 オブジェクト指向構文 / 第3回 模擬試験

PHPのクラスの静的メンバーに関する次の記述のうち、正しいものはどれか。

静的プロパティにアクセスするには`::`(スコープ解決演算子)を使う。 正解
静的メソッド内では`$this`を使ってインスタンスにアクセスできる。
静的プロパティは、インスタンスごとに異なる値を持つ。
静的メソッドはインスタンス化しないと呼び出せない。
解説
静的(`static`)プロパティやメソッドには、インスタンスを介さず`ClassName::$property`や`ClassName::method()`のように、スコープ解決演算子`::`を使ってアクセスします。 他の選択肢が誤りである理由は次の通りです。 ・`$this`は「特定のインスタンス」を指す疑似変数のため、インスタンスに紐付かない静的メソッド内では使用できません(使おうとするとエラーになります)。 ・静的プロパティはクラス全体で1つだけ存在し、すべてのインスタンスで共有されます。あるインスタンス経由で値を変えると、他のインスタンスからも変更後の値が見えます。 ・静的メソッドは`ClassName::method()`のように、インスタンス化せずに直接呼び出せます。 例: ``` class Counter { public static int $count = 0; public static function increment(): void { self::$count++; } } Counter::increment(); Counter::increment(); echo Counter::$count; // 2 ``` (参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.1.6〜10.1.7節 静的メソッド/静的プロパティ p.485〜488)

あわせて読みたい解説記事