ch03 7章中 3章目

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

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch03 — プロパティを読み書きする」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch03 — プロパティを読み書きする」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch03 — プロパティを読み書きする」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

プロパティ (property) は インスタンスが保持するデータの場所 で、PHP では $obj->prop の形でアクセスする。-> (アロー) はオブジェクトの中身を指す演算子で、$user->name = "太郎" で代入、echo $user->name; で取得できる。1 つのインスタンスに複数のプロパティを定義しておけば、name age city のような関連データをひとまとまりで保持できる。

プロパティへのアクセスは 左辺と右辺の両方で使える$user->age = 20; (左辺で代入) と echo $user->age; (右辺で取得) は同じ記法で、これは通常の変数 $x と同じリズムで読み書きできるということ。インスタンスごとにプロパティは独立しているので、$a->name$b->name を別々に設定しても互いに影響しない。

このチャプターでは public プロパティを使った素朴な代入と取得だけを扱い、外から自由に書き換えられる状態にしている。実務では「外から書き換えてほしくないデータ」を private にして getter / setter 越しに公開する設計が一般的だが、それは ch07 (アクセス修飾子) で扱う。まずは「インスタンスはデータを持てる」「プロパティは -> で出し入れする」の感覚をしっかり付ける。

学習目標

  • $obj->prop = 値; で値を入れられる
  • $obj->prop で値を取り出せる
  • 1 つのインスタンスに複数のプロパティを設定できる

ドリル

no 内容
01 nameage を設定して両方を出力
02 name / age / city の 3 プロパティを設定して出力

解説スライド 全 6 枚

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

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

    Lesson 8 / Chapter 3

  2. $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
    • = の左に書けば書き込み
    • 式の中に書けば読み出し
    • 矢印は -> (間にスペースは入れない)
  3. 複数のプロパティをまとめて設定

    <?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 ヶ所にまとめる」のが読みやすい)
  4. 取り出して文字列と連結する

    <?php
    $u = new User();
    $u->name = "太郎";
    $u->age  = 20;
    
    echo $u->name . " (" . $u->age . " 歳)\n";

    実行結果:

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

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

    直したもの:

    $u->name = "太郎";
    • ->マイナス + 大なりスペースなし が標準
  6. このチャプターでできるようになること

    $obj->prop = 値; で値を書き込める ✅ $obj->prop で値を読み出せる ✅ 1 つのインスタンスに複数のプロパティを設定できる ✅ プロパティを . で連結したり {$obj->prop} で展開したりできる

    → ドリルへ

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

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} で展開したりできる

→ ドリルへ

この章で取り組む 演習問題の流れ (2ステップ)
  1. 01 ドリル 01 — 2 つのプロパティを設定して出力 README.md starter.php answer.php
  2. 02 ドリル 02 — 3 つのプロパティを設定して出力 README.md starter.php answer.php

演習問題の詳細

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

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

問題

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

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

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

期待される出力:

太郎
20

ヒント

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

🧪 ブラウザで試す

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

PHP ランタイム未読込

          

        

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

問題

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

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

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

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

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

期待される出力:

太郎
25
東京

ヒント

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

🧪 ブラウザで試す

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

PHP ランタイム未読込

          

        

演習問題(2問)

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

    README.md starter.php answer.php

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

    README.md starter.php answer.php

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

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