new でインスタンスを作る
テクノロジ系 / class (class / new / プロパティ / メソッド / `$this` / コンストラクタ)
new でインスタンスを作る
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 で取り出せる
✅ 同じクラスから複数のインスタンスを作ると独立すると言える
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — インスタンスを 1 つ作る
問題
User クラス (プロパティ public string $name;) を定義し、new User() で 1 つインスタンスを作り、name に "太郎" を入れて出力してください。
期待される出力:
太郎
採点
php scripts/grade.php topics/class/ch02-new-instance/drill/01-create-one/
ヒント
class User { public string $name; }を書く$u = new User();でインスタンスを作る$u->name = "太郎";で値を入れるecho $u->name . "\n";で出力
ドリル 02 — インスタンスを 2 つ作る
問題
User クラス (プロパティ public string $name;) を定義し、new User() で 2 つ のインスタンスを作ってください。
- 1 つ目の
nameには"太郎"を入れる - 2 つ目の
nameには"花子"を入れる
その後、2 つの name をこの順で出力してください。
期待される出力:
太郎 花子
採点
php scripts/grade.php topics/class/ch02-new-instance/drill/02-create-two/
ヒント
new User()を 2 回呼ぶと別々のインスタンスが作れる- それぞれ別の変数 (
$aと$bなど) に入れる - 一方の
nameを変えても、もう一方には影響しない