概要

コンストラクタ (__construct) は new の瞬間に自動的に呼ばれる特別なメソッド で、インスタンスが生まれると同時にプロパティを初期化するために使う。これまでは new User(); $u->name = "太郎"; $u->age = 20; のように 3 行に分けて書いてきたが、__construct(string $name, int $age) を定義しておけば new User("太郎", 20)1 行で生成と初期化が完了 する。代入忘れも防げて、設計図側に「このクラスはこの値が必ず必要」という意図を残せる。

書き方は public function __construct(...) { ... } で、メソッド名は アンダースコア 2 つ + construct と決まっている。中で $this->name = $name; のように引数をプロパティに代入していくのが定番パターン。new クラス名(引数, ...) のときに () の中に書いた値が、そのままコンストラクタの引数として渡る仕組みになっている。引数名とプロパティ名を同じにしても $this-> が付くかどうかで判別されるので混ざらない。

PHP 8 には コンストラクタプロモーション という短縮記法もあり、public function __construct(public string $name, public int $age) { } と書くだけでプロパティ宣言と代入を一気に済ませられる。本章ではまず標準形のコンストラクタを書けるところを目標にして、短縮形は補足として頭の片隅に置いておく。

学習目標

ドリル

no 内容
01 __construct(string $name, int $age) で初期化する

演習: ドリル 01 — コンストラクタで初期化する

問題

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

new User("太郎", 20)1 行で インスタンスを作り、nameage を 1 行ずつ出力してください。

期待される出力:

太郎
20

ヒント

この章を AI に聞く

  1. 「ch06 — コンストラクタで初期化する」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch06 — コンストラクタで初期化する」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch06 — コンストラクタで初期化する」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch06 — コンストラクタで初期化する」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE