PHP アドバンス

PHP OOP - コンストラクタ

1. PHP - __construct() 関数

PHPの __construct() 関数は、クラスから新しいオブジェクトが作成される(new キーワードが使用される)たびに、自動的に呼び出される特殊なメソッドです。

__construct() 関数はアーギュメント(引数)を受け取ることができ、これらはオブジェクトの作成時に渡されます(例:$apple = new Fruit("Apple", "Red");)。これにより、プロパティの動的な初期化が可能になり、コードの記述量を大幅に削減できます。

       注意:__construct() 関数は、2つのアンダースコア(__)で始まることに注意してください。

以下の例を見てみましょう。ここでは、オブジェクトが作成されるたびに自動で呼び出される __construct() 関数を使用しています。これにより、以前のレッスンのように set_details() メソッドを個別に呼び出す手間が省け、コードが簡潔になっています。

1.1 実装例

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

  // コンストラクタ:インスタンス化の際に自動実行される
  function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }

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

// オブジェクト作成時にコンストラクタへ値を渡す
$apple = new Fruit('Apple', 'Red');
$apple->get_details();

$banana = new Fruit('Banana', 'Yellow');
$banana->get_details();
?>

2. 実装例の解説

上記のコードの動きを詳しく見ていきましょう。

  1. プロパティの定義: Fruit クラスには $name$color という2つのプロパティが定義されています。
  2. 初期化: __construct() メソッドは、Fruit クラスの新しいオブジェクトが作成される際に、提供された値を使用してプロパティを初期化します。
  3. メソッドの定義: get_details() メソッドは、フルーツの名前と色を出力するように定義されています。
  4. $apple オブジェクトの生成: Fruit クラスから新しいオブジェクト $apple が作成され、値("Apple", "Red")がコンストラクタに渡されます。
  5. $banana オブジェクトの生成: 同様に $banana オブジェクトが作成され、値("Banana", "Yellow")がコンストラクタに渡されます。
  6. 情報の表示: $apple および $banana オブジェクトに対して get_details() メソッドを呼び出し、それぞれの詳細を表示します。

このようにコンストラクタを活用することで、オブジェクトの生成と同時に必要なセットアップを完了させることができ、よりクリーンで保守性の高いコードを実現できます。