クラスを定義する
テクノロジ系 / class (class / new / プロパティ / メソッド / `$this` / コンストラクタ)
クラスを定義する
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 型 $名前; の形で並べられる
✅ クラスは設計図であって、定義だけでは実体が無いと言える
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — User クラスを定義する
問題
User という名前のクラスを定義してください。プロパティは次の 2 つ:
public string $name;public int $age;
クラスを定義したあと、最後に echo "OK\n"; を実行してください。
期待される出力:
OK
採点
php scripts/grade.php topics/class/ch01-class-def/drill/01-define-user/
ヒント
class User { ... }で囲む{ }の中に 2 つのプロパティを並べる- クラス定義のあとに
echo "OK\n";を書く - 「定義しただけ」では何も出力されない。
echoを忘れずに