PHP アドバンス

PHP クラスとオブジェクト

1. PHP OOP クラスとオブジェクト

クラスはオブジェクトのテンプレートであり、オブジェクトの構造(プロパティ)と振る舞い(メソッド)を定義します。
一方、オブジェクトはクラスから生成された個別のインスタンスです。

2. クラスを定義する

クラスは class キーワードを使用して定義し、その後にクラス名と一対の中括弧 {} を記述します。すべてのプロパティとメソッドはこの中括弧の中に配置されます。

ここでは、Fruit という名前のクラスを作成すると仮定しましょう。Fruit クラスは namecolor といったプロパティを持つことができます。さらに、詳細を設定・取得するための2つのメソッドを持たせます。

<?php
class Fruit {
  // プロパティ
  public $name;
  public $color;

  // プロパティをセットするためのメソッド
  function set_details($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }

  // プロパティを表示するためのメソッド
  function get_details() {
    echo "名前: " . $this->name . ". 色: " . $this->color . ".<br>";
  }
}
?>

注意: プロパティとはクラス内にある「変数」のことであり、メソッドとはクラス内にある「関数」のことです。
注意:$this キーワードは、メソッド内において現在のオブジェクトのプロパティやメソッドを参照するために使用されます。

3. オブジェクトを定義する

クラスはオブジェクトがあってこそ意味をなします。1つのクラスから複数のオブジェクト(インスタンス)を作成することが可能です。各オブジェクトはクラスで定義されたすべてのプロパティとメソッドを継承しますが、各オブジェクトはそれぞれ独自のプロパティ値を保持します。

クラスのオブジェクトは new キーワードを使用して作成します。

以下の例では、Fruit クラスから2つのオブジェクト($apple$banana)を作成しています。

3.1 実装例

<?php
class Fruit {
  public $name;
  public $color;

  function set_details($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }

  function get_details() {
    echo "名前: " . $this->name . ". 色: " . $this->color . ".<br>";
  }
}

// Fruitクラスから $apple という名前のオブジェクトを作成
$apple = new Fruit();
$apple->set_details('Apple', 'Red'); // プロパティ値をセット
$apple->get_details(); // 出力を取得

// Fruitクラスから $banana という名前のオブジェクトを作成
$banana = new Fruit();
$banana->set_details('Banana', 'Yellow'); // プロパティ値をセット
$banana->get_details(); // 出力を取得
?>

4. PHP - instanceof

instanceof キーワードを使用すると、特定のオブジェクトがあるクラスに属しているかどうかを確認できます。

4.1 実装例

<?php
$apple = new Fruit();
// $apple が Fruit クラスのインスタンスかどうかをチェック
var_dump($apple instanceof Fruit);
?>