採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

クラスを定義する

テクノロジ系 / 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 を忘れずに