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

プロパティを読み書きする

テクノロジ系 / class (class / new / プロパティ / メソッド / `$this` / コンストラクタ)

プロパティを読み書きする

Lesson 8 / Chapter 3

$obj->プロパティ名 で読み書きする

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

$u = new User();
$u->name = "太郎";   // 書き込み
$u->age  = 20;

echo $u->name . "\n";  // 読み出し → 太郎
echo $u->age . "\n";   // 読み出し → 20
  • = の左に書けば書き込み
  • 式の中に書けば読み出し
  • 矢印は -> (間にスペースは入れない)

複数のプロパティをまとめて設定

<?php
class Book {
    public string $title;
    public int $price;
    public string $author;
}

$b = new Book();
$b->title  = "PHP 入門";
$b->price  = 1200;
$b->author = "山田";
  • 1 つのインスタンスに、宣言した数だけプロパティを並べられる
  • 順番は自由 (ただし「全部を 1 ヶ所にまとめる」のが読みやすい)

取り出して文字列と連結する

<?php
$u = new User();
$u->name = "太郎";
$u->age  = 20;

echo $u->name . " (" . $u->age . " 歳)\n";

実行結果:

太郎 (20 歳)
  • $u->name をそのまま . で連結できる
  • ダブルクォート文字列に埋め込む時は {$u->name} と中括弧で囲む

よくあるミス

$u . name = "太郎";    // ❌ ドットではなくアロー
$u->name == "太郎";    // ❌ 比較になっている (= 1 個)
$u -> name = "太郎";   // ⚠️ スペースを空けても動くが慣例違反

直したもの:

$u->name = "太郎";
  • ->マイナス + 大なりスペースなし が標準

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

$obj->prop = 値; で値を書き込める

$obj->prop で値を読み出せる

✅ 1 つのインスタンスに複数のプロパティを設定できる

✅ プロパティを . で連結したり {$obj->prop} で展開したりできる

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

ドリル 01 — 2 つのプロパティを設定して出力

問題

User クラスを定義してください。

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

new User() でインスタンスを作り、name"太郎"age20 を入れて、それぞれ 1 行ずつ出力してください。

期待される出力:

太郎
20

採点

php scripts/grade.php topics/class/ch03-properties/drill/01-set-and-get/

ヒント

  • $u = new User(); でインスタンスを作る
  • $u->name = "太郎"; $u->age = 20; で書き込み
  • echo $u->name . "\n"; echo $u->age . "\n"; で読み出し

ドリル 02 — 3 つのプロパティを設定して出力

問題

User クラスを定義してください。

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

new User() でインスタンスを作り、次の値を入れてください。

プロパティ
name"太郎"
age25
city"東京"

その後、nameagecity の順に 1 行ずつ出力してください。

期待される出力:

太郎
25
東京

採点

php scripts/grade.php topics/class/ch03-properties/drill/02-multiple-props/

ヒント

  • 3 つのプロパティをクラス内に並べる
  • 同じインスタンスにすべて書き込む
  • 出力は宣言順 (name → age → city) で揃える