PHP オブジェクト指向の記述について
オブジェクト指向ってヤツには「クラスの設定」「オブジェクトの作成」「オブジェクトに対して処理」の3つがある。
クラスの設定
クラスの枠
関数の設定のときに使う「function」を「class」にする。
関数の設定では引数の有無に関わらず関数名のあとに「()」をつけるけど「class」では不要。
function Recatnap(){}
「Recatnap」というクラスの設定例
class Recatnap{}
クラスの中身
プロパティとメソッドを設定する。
プロパティは値を格納するための変数(メンバ変数)の設定。
メソッドは関数と同じような記述。
「Recatnap」というクラスに「メンバ変数 rct」の初期値を「0」にして、メソッド「getVal」を作成。
- class Recatnap{
- // メンバ変数
- var $rct = 0;
- // メソッド
- function getVal(){
- }
- }
オブジェクトの作成
クラスを使ったオブジェクトを作成する。
わかりづらいので「オブジェクト指向について」を元にメモる。
つまり、「車」という「クラス」があって「居眠猫」を作成。作成というより準備だな。
こんな感じ。
前述の「Recatnap」というクラスで「catnap」というオブジェクトを作成する場合。
オブジェクトに対して処理
クラスのメンバ変数(プロパティ)の値の抜出し・変更
オブジェクト($catnap)のメンバ変数値(var $rct = 0;)を他の変数($oth)に代入する場合。
オブジェクト($catnap)のメンバ変数値(var $rct = 0;)を他の値に変更する場合。
この場合はクラス側で代入するためのメソッド(関数)を別に用意してあげた方が良いと思う。
メソッドを使う
基本、普通に関数を使う感じで問題なし。
関数と違うのは「[オブジェクト名]->[メソッド(関数名)]」って感じにしなくちゃいけないぐらい。
メンバ変数を上書きするメソッド(関数:setVal())の例。
- class Recatnap{
- // メンバ変数
- var $rct = 0;
- // メソッド
- function getVal(){
- }
- function setVal($arg){
- $catnap->rct = $arg;
- }
- }
- // クラス(Recatnap)でオブジェクト($catnap)を作成
- $catnap = new Recatnap();
- // メソッド(setVal())を使って値を変更
- $catnap->setVal(9);
適当なクラスを使って値の抽出とかしたサンプル。
- <?php
- class Testclass{
- var $test = 5;
- // メンバ変数の$testの値に引数($arg)の値を足したものをreturnする。
- function classTest($arg){
- $momo = $this->test + $arg;
- return $momo;
- }
- // メンバ変数の$testの値を引数($arg)の値に変更する。
- function setVal_test( $arg ){
- $this->test = $arg;
- }
- }
- // オブジェクト($obj)の作成
- $obj = new Testclass();
- echo "メンバ変数の値:" . $obj->test . "<br>";
- $aaa = $obj->test;
- echo "メンバ変数を他の変数に代入した値:" . $aaa . "<br>";
- echo "メソッドのclassTest()を使ったときの戻値:" . $obj->classTest(3) . "<br>";
- $obj->test = 2;
- echo "メンバ変数を変更:" . $obj->test . "<br>";
- $obj->setVal_test(50);
- echo "メソッドを使ってメンバ変数を変更:" . $obj->test . "<br>";
- ?>
結果:
メンバ変数の値:5
メンバ変数を他の変数に代入した値:5
メソッドのclassTest()を使ったときの戻値:8
メンバ変数を変更:2
メソッドを使ってメンバ変数を変更:50