概要

$this「いま動いているメソッドが属しているインスタンス自身」 を指す特別な変数だ。メソッドの中から $this->name と書けば、そのメソッドを呼んだインスタンス自身の name プロパティを読み書きできる。$user->greet() を実行するとき、メソッド greet の中の $this$user を指し、別の $another->greet() のときは $another を指す。同じメソッドが、呼ばれたインスタンスに応じて違う値を扱えるようになる仕組みの中心が $this

$this を理解すると、メソッドが「自分のデータに基づいて振る舞いを変える」設計ができるようになる。function greet() の中で echo "こんにちは、" . $this->name . "です"; と書いておけば、太郎の User を作って呼べば「こんにちは、太郎です」、花子なら「こんにちは、花子です」と、データに応じて結果が変わる。これがオブジェクト指向の典型的な書き方になる。

このチャプターで最頻出のエラーが 「$this 抜け」。メソッドの中でプロパティを使うつもりで echo $name; と書いてしまうと、メソッドのローカル変数 $name を探しに行って「未定義」エラーになる。プロパティに触りたいときは必ず $this-> を前に付ける、というルールを染み込ませるのがこの章のゴール。

学習目標

ドリル

no 内容
01 $this->name を使った greet() で「こんにちは、太郎です」と出力

演習: ドリル 01 — $this->name を使った greet

問題

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

new User() でインスタンスを作り、name"太郎" を入れて、greet() を呼んで出力してください。

期待される出力:

こんにちは、太郎です

ヒント

この章を AI に聞く

  1. 「ch05 — $this でプロパティを参照する」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch05 — $this でプロパティを参照する」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch05 — $this でプロパティを参照する」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch05 — $this でプロパティを参照する」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE