0Pricing
PHP Academy · レッスン

クラス、プロパティ、メソッド

プロパティとメソッドを持つPHPクラスを定義します

「クラス、プロパティ、メソッド」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

導入: PHP クラス

クラスは、オブジェクトを作成するための設計図です。プロパティ(データ)とメソッド(振る舞い)を定義します。PHP の OOP 機能により、コードをよりモジュール化し、再利用しやすく、保守しやすくできます。

基本概念

PHP クラスの重要な概念:

  • class ClassName {} を使用して定義する
  • プロパティはデータを保持し、メソッドは振る舞いを定義する
  • new ClassName() でインスタンスを作成する
  • -> 矢印演算子でメンバーにアクセスする

クラスの定義

例:

<?php
class Car {
    public string $brand;
    public int    $year;
    public float  $price;

    public function describe(): string {
        return "{$this->year} {$this->brand}";
    }
}

$car = new Car();
$car->brand = 'Toyota';
$car->year  = 2022;
$car->price = 25000.0;

echo $car->describe(); // 2022 Toyota

アクセス修飾子

続き:

<?php
class BankAccount {
    public  string $owner;
    private float  $balance;
    protected string $currency;

    // public: accessible everywhere
    // private: only within this class
    // protected: this class + subclasses
}

型付きプロパティ

練習:

<?php
class Product {
    public string  $name;
    public float   $price;
    public int     $stock = 0;  // default value
    public bool    $active = true;

    public function inStock(): bool {
        return $this->stock > 0;
    }
}

インスタンスメソッド

さらに詳しく:

<?php
class Counter {
    private int $count = 0;

    public function increment(): void { $this->count++; }
    public function decrement(): void { $this->count--; }
    public function reset(): void    { $this->count = 0; }
    public function value(): int      { return $this->count; }
}

$c = new Counter();
$c->increment();
$c->increment();
echo $c->value();  // 2

メソッドチェーン

高度な使用方法:

<?php
class QueryBuilder {
    private string $table = '';
    private int    $limit = 100;

    public function from(string $t): static { $this->table = $t; return $this; }
    public function limit(int $n): static   { $this->limit = $n; return $this; }
    public function build(): string {
        return "SELECT * FROM {$this->table} LIMIT {$this->limit}";
    }
}

echo (new QueryBuilder())->from('users')->limit(10)->build();

クラス定数

実際の開発で使われるパターン:

<?php
class HttpStatus {
    const OK        = 200;
    const NOT_FOUND = 404;
    const ERROR     = 500;

    public static function message(int $code): string {
        return match($code) {
            self::OK        => 'OK',
            self::NOT_FOUND => 'Not Found',
            default         => 'Error',
        };
    }
}

echo HttpStatus::message(HttpStatus::NOT_FOUND);  // Not Found

Readonly プロパティ(PHP 8.1)

ベストプラクティス:

<?php
class Point {
    public function __construct(
        public readonly float $x,
        public readonly float $y,
    ) {}

    public function distanceTo(Point $other): float {
        return sqrt(($this->x - $other->x) ** 2 + ($this->y - $other->y) ** 2);
    }
}

$p1 = new Point(0, 0);
$p2 = new Point(3, 4);
echo $p1->distanceTo($p2);  // 5

実践的なパターン

PHP クラスの実践的なパターンを使って、これまでの内容を組み合わせます。

よくある落とし穴

PHP クラスでよくある次の間違いを避けてください。

  • アクセス修飾子を使用して状態をカプセル化する
  • 簡潔なクラスにはコンストラクタープロモーションを優先する
  • 固定値は const で定数として定義する
  • 読みやすい API にはメソッドチェーン(フルーエントインターフェース)を使用する

確認問題

プロパティへのアクセスをクラス自身の内部だけに制限するアクセス修飾子はどれですか。

まとめ: PHP クラス

PHP クラスについて学びました。覚えておくべき重要なポイントは次のとおりです。

  • アクセス修飾子を使用して状態をカプセル化する
  • 簡潔なクラスにはコンストラクタープロモーションを優先する
  • 固定値は const で定数として定義する
  • 読みやすい API にはメソッドチェーン(フルーエントインターフェース)を使用する

よくある質問

「クラス、プロパティ、メソッド」レッスンは無料ですか?

はい。「クラス、プロパティ、メソッド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「クラス、プロパティ、メソッド」で何を学びますか?

プロパティとメソッドを持つPHPクラスを定義します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「クラス、プロパティ、メソッド」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. クラス、プロパティ、メソッド
  2. コンストラクタとデストラクタ
  3. 静的プロパティとメソッド
  4. マジックメソッドの概要
← PHP Academyに戻る