ITHACK
~ みんなのIT部門 ~

【PHP】コンストラクタ – インスタンスの初期化メソッド

クラスにコンストラクタと呼ばれるメソッドを定義することができます。
コンストラクタはインスタンス生成時に実行されるメソッドで、フィールドの初期化などに使います。

ここではコンストラクタについて解説します。

  • コンストラクタ

コンストラクタとは

コンストラクタはクラスからインスタンスを生成する時に実行されるメソッドです。
初期化メソッドとも呼ばれ、フィールドの初期値などを設定する際に使います。

基本構文

コンストラクタの基本構文は次のようになります。

定義

class クラス名 {
    アクセス修飾子 function __construct( $引数名 ) {
        // 処理・・・・・・・
    }
}

コンストラクタの構文はメソッドと同じですが、メソッド名は__constructとします。
定義するとインスタンス生成時に必ず実行されるようになります。

インスタンス生成

new クラス名(引数値)

コンストラクタに引数がある場合、インスタンス生成時の丸括弧()に与える引数を記述します。

サンプルコード

コンストラクタを使ったサンプルコードをご覧ください。

<?php

// クラス
class Person {
    
    // フィールド(名前)
    public $name;
    // フィールド(身長)
    public $height;
    // フィールド(年齢)
    public $age;
    
    // コンストラクタ
    public function __construct( $name, $height, $age ) {
        $this->name = $name;
        $this->height = $height;
        $this->age = $age;
    }
    
    // プロフィールを出力する
    public function profile() {
        echo "===== プロフィール =====\n";
        echo "名前 : ".$this->name."\n";
        echo "身長 : ".$this->height."cm\n";
        echo "年齢 : ".$this->age."歳\n";
    }
    
}

// インスタンス生成
$watanabe = new Person('Watanabe You', 157, 16);

// プロフィールを出力
$watanabe->profile();

?>
===== プロフィール =====
名前 : Watanabe You
身長 : 157cm
年齢 : 16歳

“人”を表現するPersonクラスを使ったサンプルコードです。
コンストラクタの定義は14~18行目、インスタンスの生成は31行目です。

コンストラクタで引数を3つ取っているため、インスタンス生成時に各引数に与える値を記述しています。

profileメソッドの出力から、フィールドに値が記憶されていることが分かります。

演習問題

問題1

次の実行結果になる車クラスを扱うプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 車クラスを作成する
  • 車クラスのフィールドはナンバー、色、乗車人数とする
  • 車クラスのインスタンスの初期値はコンストラクタで設定する
  • 車情報を出力するinfoメソッドを作成する
===== 車情報 =====
ナンバー : 1234
色    : 紺色
乗車人数 : 5人
===== 車情報 =====
ナンバー : 0987
色    : 赤
乗車人数 : 2人

問題2

次の実行結果になる家クラスを扱うプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 家クラスを作成する
  • 家クラスのフィールドは階数、間取り、完成日とする
  • 家クラスのインスタンスの初期値はコンストラクタで設定する
  • 家情報を出力するinfoメソッドを作成する
===== 家情報 =====
階数  : 1階
間取り : 3LDK
完成日 : 2022/01/25
===== 家情報 =====
階数  : 3階
間取り : 10LDK
完成日 : 2020/03/24
===== 家情報 =====
階数  : 2階
間取り : 5LDK
完成日 : 2021/08/01

まとめ

コンストラクタはインスタンス生成時に実行されるメソッドです。
初期化メソッドとも呼ばれ初期値を設定するために使います。

クラスの基礎になりますので、覚えていきましょう。