概要

アクセス修飾子は 「プロパティやメソッドに、どこから触ってよいか」を制限する仕組み で、PHP には public / private / protected の 3 段階がある。public は外からも内からも自由に触れる、privateそのクラスの中からしか 触れない、protectedそのクラスとその子クラスからのみ 触れる、という違いがある。アクセスを絞ることで「外から壊されたくない内部データ」を守れる。

カプセル化 (encapsulation) と呼ばれるこの考え方の動機は 「外から自由に書き換えられると、データの整合性が保てない」 ことにある。例えば年齢を 0 以上に保ちたいクラスで public $age にしていると、外から $user->age = -100; と書かれて壊れる余地が残る。private $age にして setAge(int $n) のような公開メソッド越しにだけ更新を許せば、メソッドの中でバリデーションをかけられる。

実務でよく使うパターンは private プロパティ + public getter / setter」getName() で読み取り、setName(string $s) で書き込み、というインタフェースに統一しておくと、後から「読み取りを禁止する」「書き込み時にログを取る」のような変更を 1 か所だけで完結できる。protected は ch01 (継承) と組み合わせて初めて意味を持つので、本章では「子クラスから触れる修飾子」とだけ覚えておけば十分。

学習目標

ドリル

no 内容
01 private $namepublic function getName() で取り出す

protected継承 と一緒に使う修飾子なので、本格的に使うのは L9。本 chapter では「子クラスから触れる」とだけ覚える。

演習: ドリル 01 — private プロパティを getter で取り出す

問題

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

new User("太郎") でインスタンスを作り、getName() の戻り値を出力してください。

期待される出力:

太郎

ヒント

この章を AI に聞く

  1. 「ch07 — アクセス修飾子 (public / private / protected)」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch07 — アクセス修飾子 (public / private / protected)」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch07 — アクセス修飾子 (public / private / protected)」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch07 — アクセス修飾子 (public / private / protected)」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE