PHP オブジェクト指向の記述について

2011/03/23

オブジェクト指向ってヤツには「クラスの設定」「オブジェクトの作成」「オブジェクトに対して処理」の3つがある。

クラスの設定

クラスの枠

関数の設定のときに使う「function」を「class」にする。
関数の設定では引数の有無に関わらず関数名のあとに「()」をつけるけど「class」では不要。

「Recatnap」という関数の設定例
function Recatnap(){}

「Recatnap」というクラスの設定例
class Recatnap{}

クラスの中身

プロパティとメソッドを設定する。

プロパティは値を格納するための変数(メンバ変数)の設定。
メソッドは関数と同じような記述。

「Recatnap」というクラスに「メンバ変数 rct」の初期値を「0」にして、メソッド「getVal」を作成。

  1. class Recatnap{
  2.  // メンバ変数
  3.  var $rct = 0;
  4.  
  5.  // メソッド
  6.  function getVal(){
  7.  }
  8. }

オブジェクトの作成

クラスを使ったオブジェクトを作成する。
わかりづらいので「オブジェクト指向について」を元にメモる。
つまり、「車」という「クラス」があって「居眠猫」を作成。作成というより準備だな。

[居眠猫] = new [車];

こんな感じ。
前述の「Recatnap」というクラスで「catnap」というオブジェクトを作成する場合。

$catnap = new Recatnap();

オブジェクトに対して処理

クラスのメンバ変数(プロパティ)の値の抜出し・変更

オブジェクト($catnap)のメンバ変数値(var $rct = 0;)を他の変数($oth)に代入する場合。

$oth = $catnap->rct;

オブジェクト($catnap)のメンバ変数値(var $rct = 0;)を他の値に変更する場合。

$catnap->rct = 9;

この場合はクラス側で代入するためのメソッド(関数)を別に用意してあげた方が良いと思う。

メソッドを使う

基本、普通に関数を使う感じで問題なし。
関数と違うのは「[オブジェクト名]->[メソッド(関数名)]」って感じにしなくちゃいけないぐらい。

メンバ変数を上書きするメソッド(関数:setVal())の例。

  1. class Recatnap{
  2.  // メンバ変数
  3.  var $rct = 0;
  4.  
  5.  // メソッド
  6.  function getVal(){
  7.  }
  8.  
  9.  function setVal($arg){
  10.   $catnap->rct = $arg;
  11.  }
  12. }
  13.  
  14. // クラス(Recatnap)でオブジェクト($catnap)を作成
  15. $catnap = new Recatnap();
  16.  
  17. // メソッド(setVal())を使って値を変更
  18. $catnap->setVal(9);

適当なクラスを使って値の抽出とかしたサンプル。

  1. <?php
  2. class Testclass{
  3.  var $test = 5;
  4.  
  5.  // メンバ変数の$testの値に引数($arg)の値を足したものをreturnする。
  6.  function classTest($arg){
  7.   $momo = $this->test + $arg;
  8.   return $momo;
  9.  }
  10.  
  11.  // メンバ変数の$testの値を引数($arg)の値に変更する。
  12.  function setVal_test( $arg ){
  13.   $this->test = $arg;
  14.  }
  15.  
  16. }
  17.  
  18. // オブジェクト($obj)の作成
  19. $obj = new Testclass();
  20.  
  21. echo "メンバ変数の値:" . $obj->test . "<br>";
  22.  
  23. $aaa = $obj->test;
  24. echo "メンバ変数を他の変数に代入した値:" . $aaa . "<br>";
  25.  
  26.  
  27. echo "メソッドのclassTest()を使ったときの戻値:" . $obj->classTest(3) . "<br>";
  28.  
  29. $obj->test = 2;
  30. echo "メンバ変数を変更:" . $obj->test . "<br>";
  31.  
  32. $obj->setVal_test(50);
  33. echo "メソッドを使ってメンバ変数を変更:" . $obj->test . "<br>";
  34. ?>

結果:
メンバ変数の値:5
メンバ変数を他の変数に代入した値:5
メソッドのclassTest()を使ったときの戻値:8
メンバ変数を変更:2
メソッドを使ってメンバ変数を変更:50

参考:クラスとオブジェクト/PHP入門

新着(ニュース関連以外)

2017-11-09
PCでプッシュ通知ってのをしたい。
2017-11-06
PHPのバージョンを上げたらwikiが壊れたっぽい。
2017-08-03
formのinputでmaxlengthを使うとFirefoxでバグってた。他のブラウザでも気づかずにバグってたかもしれない。
2017-07-19
折れ線グラフをもう少しゆるやかに・・・というか何というか・・・調べていくと「移動平均」っていう言葉にたどり着いた
2017-07-10
FuelPHPの1.8をダウンロードして使っていたらセッションが使えないということに気付いた。