概要

static プロパティは インスタンスごとに別々に持つのではなく、クラス全体で 1 つだけ共有される値 だ。通常のプロパティ (public $name) は $a$b を作ると別々の name を持つが、public static $count$a$b も同じ $count を共有する。インスタンスを何個作ったかを数えるカウンタや、クラス全体で使う設定値など「インスタンス間で共通の記録」を持たせる用途で使われる。

参照の書き方は クラス内からは self::$name、クラス外からは ClassName::$name で、いずれも -> ではなく :: (スコープ解決演算子) を使う。static メソッドも同様に ClassName::method() の形で呼び出せて、インスタンスを作らずに呼べる。これは「ユーティリティ関数の集まり」のようなクラス (Math::sqrt(2) 的なもの) を作るときに便利だが、状態を持つ static は テストが書きにくい / 副作用が追いにくい という弱点もある。

補足として PHP には self::static:: の違いがあり、これは 遅延静的束縛 (late static binding) という機能。self:: は「書かれているクラス」を、static:: は「呼び出されたクラス」を指すので、継承して使うときに挙動が変わる。本章では self:: を使う基本パターンに留め、static:: は必要になったときに調べる程度の認識でよい。

学習目標

ドリル

no 内容
01 User::$count をインスタンス生成ごとにインクリメントする

演習: ドリル 01 — User インスタンス数を数える

問題

User クラスを定義してください。

User のインスタンスを 3 つ作ったあと、User::$count を 1 行出力してください。

期待される出力:

3

ヒント

この章を AI に聞く

  1. 「ch06 — static プロパティ・メソッド」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch06 — static プロパティ・メソッド」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch06 — static プロパティ・メソッド」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch06 — static プロパティ・メソッド」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE