PHP はオブジェクト指向言語です。
オブジェクト指向と聞くと敬遠しがちな方も多いと思いますが、使い慣れると楽にプログラムできます。
ここでは、PHP でクラスを使う方法についてまとめます。
クラスの定義
PHP におけるクラスの宣言は、以下の構文で行うことができます。
関数や変数の使い方は通常と同様ですが、クラス変数の頭には var をつけて宣言します。
この変数は、クラス内・呼び出し側のどちらからも参照することができます。
クラスを定義する構文
class クラス名 {
var $クラス内変数名;
function クラス内関数([引数1][, 引数2][, 引数3...]) {
(メンバー関数の処理)
}
}
インスタンスの生成
クラスの定義が終わったら、インスタンスを作成して利用します。
インスタンスを作成する構文
インスタンスオブジェクト変数名 = new クラス名;
それでは「車」というクラスを例に詳しく見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php class Car { // クラス内変数 var $gas = 0; // コンストラクタ function Car($liter) { $this->gas = $liter; } // クラス内関数 function run($liter) { $this->gas -= $liter; } function remaining() { return "残り" . $this->gas . "リットル"; } } ?> |
まず、var で車のガソリン残量を示すクラス内変数 gas を宣言しています。
次に、Car クラスのコンストラクタを宣言し、ガソリンの残量を返す remaining 関数を定義しています。
コンストラクタとは?
コンストラクタとは、インスタンスを生成するときに自動的に呼び出される特殊な関数のことです。
クラス名と同じ名前の関数は自動的にコンストラクタとなり、「new」された時点で実行されます。
通常、クラス変数などの初期化を行うようにプログラムを記述します。
上記のクラスのインスタンスを生成するには、以下のように記述します。
車クラスのインスタンスを生成
$my_car = new Car(50);
echo $my_car->remaining();
出力結果
残り50リットル
クラス内関数の呼出し
クラス内関数を呼出すには「インスタンス名->関数名();」で呼び出すことができます。
クラスの継承
継承とは
PHP でクラスを定義する例として、ガソリン残量を示すことができる車を例に紹介しました。
しかし、車にも軽自動車やワゴンなどの種類があり、ガソリン以外にも備えている機能があります。
車クラスを元に、その変数や関数を引き継いで新しいクラスを作る方法を「継承」と言います。
継承元のクラス、継承先の新しいクラスの名称は、以下のように呼ばれています。
- 継承元のクラス
スーパークラス、基底クラス、親クラス - 継承先(新しい)クラス
サブクラス、派生クラス
クラス継承の構文
クラスの継承は、以下の構文で記述することができます。
クラス継承の構文
class サブクラス extends 継承元クラス {
(処理)
}
派生クラスのサンプル
それでは、Car クラスを継承して、スポーツカーという派生クラスを作ってみます。
1 2 3 4 5 6 7 8 9 10 11 |
class SuportsCar extends Car { // コンストラクタ function SuportsCar($liter) { $this->gas = $liter; } function remaining() { return "残り" . $this->gas . "リットルで、" . $this->gas "キロ走れます"; } } |
スポーツカーのコンストラクタとなる SuportsCar 関数が追加され、
Car クラスで定義していた remaining 関数が上書き(オーバーライド)されます。
クラス内変数や、その他の関数は Car クラスのものをそのまま使用できます。
必要な部分だけオーバーライドして、派生クラスに合う動きに上書きして利用します。