ch02 7章中 2章目

ch02 — new でインスタンスを作る

スライドで見る

この章を AI と学ぶ

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

    ChatGPT Claude Gemini

  2. 「ch02 — new でインスタンスを作る」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch02 — new でインスタンスを作る」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

クラスは設計図に過ぎないので、実際にデータを保持して使うには インスタンス (実体) を作る必要がある。$user = new User(); のように new クラス名() を書くと、User の設計図から実体が 1 つ作られて変数に入る。ここから初めて $user->name = "太郎"; のようにプロパティに値を代入し、データを保持できるようになる。

1 つのクラスからインスタンスは 何個でも 作れて、それぞれ独立した状態を持つ。$a = new User();$b = new User(); で 2 つ作り、$a->name = "太郎"; $b->name = "花子"; とすれば、a と b はそれぞれ別の名前を持つ別人として共存する。タイ焼きの型枠 (クラス) から、何個でもタイ焼き (インスタンス) を焼ける、という関係性をここで確認する。

混同しやすいのが 「クラス」と「インスタンス」の用語User (クラス) と $user (インスタンス) は別物で、片方を「ユーザー」と曖昧に呼ぶと議論が滑る。本シリーズでは「クラス = 設計図、インスタンス = 実体」「クラス名は大文字始まり、インスタンスは小文字始まりの変数」という命名規則を意識的に使い分けるので、読み書きするときに区別を付けておく。

学習目標

  • new クラス名() でインスタンス (実体) を作れる
  • 1 つのクラスから何個でもインスタンスを作れることを理解する
  • インスタンスは変数に入れて使うことを理解する

ドリル

no 内容
01 User インスタンスを 1 つ作って name を出す
02 User インスタンスを 2 つ作って両方の name を出す

解説スライド 全 6 枚

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

  1. new でインスタンスを作る

    Lesson 8 / Chapter 2

  2. クラスは設計図、new で実体を作る

    <?php
    class User {
        public string $name;
        public int $age;
    }
    
    $taro = new User();
    • 設計図 (クラス) はそのままでは使えない
    • new User() で「設計図に従って 1 つ実体を作る」
    • 作ったものは変数に入れて持ち歩く

    $taro の中身は「User という型の実体 (インスタンス)」。

  3. プロパティに値を入れる

    <?php
    class User {
        public string $name;
        public int $age;
    }
    
    $taro = new User();
    $taro->name = "太郎";
    
    echo $taro->name . "\n";  // 太郎
    • $taro->name = "太郎";このインスタンスの name に値を入れる
    • $taro->name で取り出す
    • 矢印は -> (マイナスと不等号) で、間にスペースは入れない
  4. 同じクラスから何個でも作れる

    <?php
    class User {
        public string $name;
        public int $age;
    }
    
    $a = new User();
    $a->name = "太郎";
    
    $b = new User();
    $b->name = "花子";
    
    echo $a->name . "\n";  // 太郎
    echo $b->name . "\n";  // 花子
    • new User() を呼ぶたびに 別の実体 が作られる
    • $a$b は中身が独立している (一方を変えても他方は影響しない)
  5. インスタンスは設計図ごとに独立している

    <?php
    $a = new User();
    $b = new User();
    
    $a->name = "太郎";
    // $b->name には何もしていない
    
    echo $a->name . "\n";  // 太郎
    // echo $b->name は「未設定」なので警告 (ch03 で扱う)
    • 同じクラスから作ったインスタンスでも、プロパティの中身は別物
    • 「設計図は 1 枚、家は何軒でも建つ」イメージ
  6. このチャプターでできるようになること

    new クラス名() でインスタンスを作れる ✅ インスタンスを変数に入れて持ち歩ける ✅ $obj->prop = 値; で値を入れて $obj->prop で取り出せる ✅ 同じクラスから複数のインスタンスを作ると独立すると言える

    → ドリルへ

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

Lesson 8 / Chapter 2


クラスは設計図、new で実体を作る

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

$taro = new User();
  • 設計図 (クラス) はそのままでは使えない
  • new User() で「設計図に従って 1 つ実体を作る」
  • 作ったものは変数に入れて持ち歩く

$taro の中身は「User という型の実体 (インスタンス)」。


プロパティに値を入れる

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

$taro = new User();
$taro->name = "太郎";

echo $taro->name . "\n";  // 太郎
  • $taro->name = "太郎";このインスタンスの name に値を入れる
  • $taro->name で取り出す
  • 矢印は -> (マイナスと不等号) で、間にスペースは入れない

同じクラスから何個でも作れる

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

$a = new User();
$a->name = "太郎";

$b = new User();
$b->name = "花子";

echo $a->name . "\n";  // 太郎
echo $b->name . "\n";  // 花子
  • new User() を呼ぶたびに 別の実体 が作られる
  • $a$b は中身が独立している (一方を変えても他方は影響しない)

インスタンスは設計図ごとに独立している

<?php
$a = new User();
$b = new User();

$a->name = "太郎";
// $b->name には何もしていない

echo $a->name . "\n";  // 太郎
// echo $b->name は「未設定」なので警告 (ch03 で扱う)
  • 同じクラスから作ったインスタンスでも、プロパティの中身は別物
  • 「設計図は 1 枚、家は何軒でも建つ」イメージ

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

new クラス名() でインスタンスを作れる ✅ インスタンスを変数に入れて持ち歩ける ✅ $obj->prop = 値; で値を入れて $obj->prop で取り出せる ✅ 同じクラスから複数のインスタンスを作ると独立すると言える

→ ドリルへ

この章で取り組む 演習問題の流れ (2ステップ)
  1. 01 ドリル 01 — インスタンスを 1 つ作る README.md starter.php answer.php
  2. 02 ドリル 02 — インスタンスを 2 つ作る README.md starter.php answer.php

演習問題の詳細

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

ドリル 01 — インスタンスを 1 つ作る

問題

User クラス (プロパティ public string $name;) を定義し、new User() で 1 つインスタンスを作り、name"太郎" を入れて出力してください。

期待される出力:

太郎

ヒント

  • class User { public string $name; } を書く
  • $u = new User(); でインスタンスを作る
  • $u->name = "太郎"; で値を入れる
  • echo $u->name . "\n"; で出力

🧪 ブラウザで試す

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

PHP ランタイム未読込

          

        

ドリル 02 — インスタンスを 2 つ作る

問題

User クラス (プロパティ public string $name;) を定義し、new User()2 つ のインスタンスを作ってください。

  • 1 つ目の name には "太郎" を入れる
  • 2 つ目の name には "花子" を入れる

その後、2 つの name をこの順で出力してください。

期待される出力:

太郎
花子

ヒント

  • new User() を 2 回呼ぶと別々のインスタンスが作れる
  • それぞれ別の変数 ($a$b など) に入れる
  • 一方の name を変えても、もう一方には影響しない

🧪 ブラウザで試す

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

PHP ランタイム未読込

          

        

演習問題(2問)

  1. ドリル 01 — インスタンスを 1 つ作る

    README.md starter.php answer.php

  2. ドリル 02 — インスタンスを 2 つ作る

    README.md starter.php answer.php

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

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