PHPのクラスの概要
クラス
前回までは関数について記述しました。
今回はクラスについて記述していきたいと思います。
クラスの概要
クラスとはある事項に関連するものについてまとめたものです。
例えば人だったら、氏名・性別・身長・体重など格納する変数をそれぞれ用意して
歩く、食べる、寝るなどの処理を実行する関数を用意します。
それを人というクラスでまとめます。
車だったら車種、価格、大きさなどを格納する変数をそれぞれ用意して
アクセルを踏む、ブレーキをかける、ギアを変えるなどの処理を実行する関数を用意します。
それを車というクラスでまとめます。
クラスを使用することで同じような変数の定義や関数の定義を何度も記述する必要が無かったり、
変数や関数などの関連付けが分かりやすくなるといったメリットがあります。
クラスの要素について
クラスにはまずクラス名があります。
そしてクラスの中には上記のように値を格納するための変数を用意します。
これらを メンバ変数 といいます。またプロパティなどとも呼ばれます。
またクラスの中で実行させる処理である関数のことをメンバメソッドといいます。単にメソッドなどとも呼ばれます。
クラスの定義のしかた
実際のクラスの定義のしかたは以下のようになります。
class クラス名{ public メンバ変数名; function メンバメソッド名(){ このメソッド内の処理; } }
またクラスを実際に使用する際には、クラスを実際にオブジェクトを作成するという作業が必要になります。
オブジェクトを作成することで、そのオブジェクト名をかえしてクラスにアクセスできるようになります。
このオブジェクト化する作業をインスタンス化と呼びます。
インスタンス化するためには以下のようにオブジェクト名に対して、new でクラス名を代入する形にします。
$オブジェクト名 = new クラス名();
そして作成したオブジェクトを通して、クラス内に記述されたメンバ変数やメンバメソッドなどの要素にアクセスする形になります。
実際にアクセスする際には以下のようにオブジェクト名に対して ->(アロー演算子) を付けてメンバ変数名やメンバメソッド名を定義します。
以下のような形です。
$オブジェクト名->メンバ変数名; $オブジェクト名->メンバメソッド名;
クラスの使用例
以下では人に関するクラスを定義してみます。
<?php $obj = new hito(); $obj->shimei = "tanaka"; $obj->hanasu(); class hito{ public $shimei; public $seibetsu; function hanasu(){ echo "私は $this->shimei です。"; } } ?>
オブジェクトに関して
インスタンス化して作成したオブジェクトからアクセスし、メンバ変数やメンバメソッドはオブジェクトごとに異なるものになります。
そのため以下のように最初に作成したオブジェクトでメンバ変数やメンバメソッドを
変更しても次に作成したオブジェクトの値は同じ値にはなりません。
<?php $obj1 = new hito(); $obj1->shimei = "tanaka"; $obj1->hanasu(); echo "<br>"; $obj2 = new hito(); $obj2->hanasu(); class hito{ public $shimei; public $seibetsu; function hanasu(){ echo "私は $this->shimei です。"; } } ?>
結果は以下のように $obj2->shimei には値が格納されていないため NULL になっています。