ch01 7章中 1章目

ch01 — クラスを定義する

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch01 — クラスを定義する」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch01 — クラスを定義する」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch01 — クラスを定義する」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

クラスは 「関連するデータ (プロパティ) と振る舞い (メソッド) を 1 つの設計図にまとめる」 ための仕組みだ。ユーザー情報を扱うときに $name $age $city といった変数を関数の引数で毎回受け渡ししていると、変数の組み合わせが散らばって追跡が難しくなる。クラスにまとめておけば「ユーザーという 1 つのまとまり」として扱えるようになり、関係するデータと処理がコード上の同じ場所に集まる。

PHP では class クラス名 { ... } の形でクラスを宣言し、中に public string $name; のようにプロパティを並べる。PHP 7.4 以降はプロパティに型宣言を付けられるようになり、User のインスタンスの $name には必ず文字列が入ると設計図に書けるようになった。これは関数引数の型宣言 (前章) と同じ考え方で、型のミスマッチを早期に検出できる。

このチャプターでまず腹落ちさせたいのは 「クラスの定義だけでは何も実行されない」 という性質だ。class User { ... } を書いてもインスタンスを作る (next chapter) までは画面に何も出ない。クラスは「タイ焼きの 型枠 」で、実際のタイ焼きは new を実行して初めて 1 個生まれる、というメンタルモデルを最初に固める。

学習目標

  • class クラス名 { ... } の形でクラスを宣言できる
  • クラスの中にプロパティ (public 型 $名前;) を並べられる
  • 「定義しただけ」では何も実行されないことを理解する

ドリル

no 内容
01 User クラスを定義する (name と age の 2 プロパティ)

解説スライド 全 6 枚

右の ボタン キー(またはスワイプ)で次のスライドに進めます。 下の「縦表示」を開くと全スライドを一気に読めます。

  1. クラスを定義する

    Lesson 8 / Chapter 1

  2. クラスは「設計図」

    <?php
    class User {
        public string $name;
        public int $age;
    }
    • class クラス名 { ... } でクラスを宣言する
    • { } の中にプロパティ (持っているデータ) を並べる
    • クラス名は 大文字始まり が慣例 (例: User, Book)

    これは設計図なので、まだ何も実体が無い 状態。

  3. プロパティは「型 名前」で並べる

    <?php
    class Book {
        public string $title;
        public int $price;
    }
    • public は「外から触れる」という印 (ch07 で詳しく)
    • string $title; は「文字列型のプロパティ $title
    • int $price; は「整数型のプロパティ $price
    • 各プロパティの末尾に ; が必要
  4. 「定義しただけ」では何も起こらない

    <?php
    class User {
        public string $name;
        public int $age;
    }
    
    echo "OK\n";

    実行結果:

    OK
    • クラスを定義しても、自動で実体が作られたりはしない
    • 実体を作るには new が必要 (ch02 で学ぶ)
    • この時点では「設計図がメモリに登録された」だけ
  5. よくあるミス

    <?php
    class user {        // ❌ 小文字始まりは慣例違反 (動くが読みにくい)
        string $name;   // ❌ public 等の修飾子が無い
        public $age     // ❌ 末尾のセミコロン抜け
    }

    直したもの:

    <?php
    class User {
        public string $name;
        public int $age;
    }
  6. このチャプターでできるようになること

    class クラス名 { ... } でクラスを宣言できる ✅ プロパティを public 型 $名前; の形で並べられる ✅ クラスは設計図であって、定義だけでは実体が無いと言える

    → ドリルへ

1 / 6
📜 スライドを全部一気に読む(縦表示)

Lesson 8 / Chapter 1


クラスは「設計図」

<?php
class User {
    public string $name;
    public int $age;
}
  • class クラス名 { ... } でクラスを宣言する
  • { } の中にプロパティ (持っているデータ) を並べる
  • クラス名は 大文字始まり が慣例 (例: User, Book)

これは設計図なので、まだ何も実体が無い 状態。


プロパティは「型 名前」で並べる

<?php
class Book {
    public string $title;
    public int $price;
}
  • public は「外から触れる」という印 (ch07 で詳しく)
  • string $title; は「文字列型のプロパティ $title
  • int $price; は「整数型のプロパティ $price
  • 各プロパティの末尾に ; が必要

「定義しただけ」では何も起こらない

<?php
class User {
    public string $name;
    public int $age;
}

echo "OK\n";

実行結果:

OK
  • クラスを定義しても、自動で実体が作られたりはしない
  • 実体を作るには new が必要 (ch02 で学ぶ)
  • この時点では「設計図がメモリに登録された」だけ

よくあるミス

<?php
class user {        // ❌ 小文字始まりは慣例違反 (動くが読みにくい)
    string $name;   // ❌ public 等の修飾子が無い
    public $age     // ❌ 末尾のセミコロン抜け
}

直したもの:

<?php
class User {
    public string $name;
    public int $age;
}

このチャプターでできるようになること

class クラス名 { ... } でクラスを宣言できる ✅ プロパティを public 型 $名前; の形で並べられる ✅ クラスは設計図であって、定義だけでは実体が無いと言える

→ ドリルへ

この章で取り組む 演習問題の流れ (1ステップ)
  1. 01 ドリル 01 — User クラスを定義する README.md starter.php answer.php

演習問題の詳細

この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。

ドリル 01 — User クラスを定義する

問題

User という名前のクラスを定義してください。プロパティは次の 2 つ:

  • public string $name;
  • public int $age;

クラスを定義したあと、最後に echo "OK\n"; を実行してください。

期待される出力:

OK

ヒント

  • class User { ... } で囲む
  • { } の中に 2 つのプロパティを並べる
  • クラス定義のあとに echo "OK\n"; を書く
  • 「定義しただけ」では何も出力されない。echo を忘れずに

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

演習問題(1問)

  1. ドリル 01 — User クラスを定義する

    README.md starter.php answer.php

サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリを clone してください。

完了にすると進捗に反映されます