なんだかんだで、徐々にその全貌が明らかになってきたOOPの謎。
いやいや、まだ謎だらけだったりしますが、なれてくると結構簡単かもしれない。
requireで読み込むとユーザー定義関数と違って、$_POSTとか$_GETとか使えるし(普通に使えたかな?)、引数で渡してあげる場合も、ユーザー定義関数とほとんど変わらないけど、何よりも、結果をオブジェクトとしてとってこられるのが楽ちん。
結果をオブジェクトとしてとってくるというのはたとえば
class hoge{
var $value01;
var $value02;function hoge(){
$array = array(‘値1′,’値2′);
$this->value01 = $array[0];
$this->value02 = $array[1];}
}
というクラスがあったとして、value01,value02に配列の各値をいれてあげる。
取り出すときは、まず、クラスのインスタンスをつくる。
$moge = new hoge();
これは、$mogeはhogeのインスタンスとして定義したという意味。PHPの場合のインスタンスのイメージとしては、あだ名とか、クラスで定義した機能が詰まった箱みたいなのをイメージしたらわかりやすいかもしれない。
で、実はこの時点で、難しいのがコンストラクタという考え方。
おいらの場合は、さっぱりわからなかったのが、このコンストラクタ。
PHP5の場合は__construct(){}とするとコンストラクタになるらしいのだけど、PHP4の場合は、クラスの名前と同じメソッドをコンストラクタとして扱う。
あ、そうそう、コンストラクタというのは、クラスのインスタンスを作ったときに実行する処理のこと。(上のサンプルでは、配列を各プロパティに格納するという処理をしている。)
で、コンストラクタというのは、クラスのインスタンスを定義した瞬間に実行されて、インスタンスを作ったときにすでにプロパティである。value01とvalue02には値が入っている。
で、ここで、OOPのオブジェクトといわれる物が、具体的になんなのかという話で、そもそも、オブジェクトに含まれるものは、
- プロパティ
- メソッド
この2つがオブジェクトを形成しているので、クラスのインスタンスを定義したときに、プロパティもメソッドも同時に存在するのです。つまり、先ほど のインスタンスのイメージは箱というのは、インスタンスを定義した時に、通常変数であるはずの$mogeにクラスの機能が入ったという風に考えてあげるこ とができるのです。(ちなみに、あだ名といったのは、クラスのインスタンスを定義するときに、使うとき専用の違う名前を付けるイメージに近い感じがしたか ら)
で、newとやってインスタンスを定義したら、今度はプロパティを呼び出します。
$moge->value01;
こうすると箱と言ったイメージがよりつかめる(気がする)mogeという箱の中の->valueという箱の中身を取り出す。
メソッドの場合も同様に$moge->honya();でメソッドを実行します。
以上、ざっくりと自分流まとめ、しゅうりょ〜。
ツイートRelated posts: