php オブジェクト指向

www.shigeweb.jp

クラスとは
「クラス」は、『「メンバ変数(プロパティ)」という変数と「メンバ関数メソッド)」という関数を内部に持つ』という特殊な構造をした、「オブジェクト型」の値、「オブジェクト」の構造を定義するもの。
オブジェクトのイメージは『「オブジェクト」とは、幾つかの「属性(プロパティ)」と「機能(メソッド)」を持った「物体(オブジェクト)」である』といった感じ。
クラスの定義は、「class クラス名{ 定義 }」という形で行い、定義部にて「メンバ変数」と「メンバ関数」の定義を行う。
クラス名の命名規則は、基本的に関数の命名規則と同じ。が、「stdClass」という名前は使えない。
メンバ変数を定義する場合は、必ず変数の前に「var」を置いて定義する。
メンバ関数の名前には、クラス内でのみ使用される特殊な関数の名前である「__sleep()」と「__wakeup()」という名前は使えない(特別な意味を持つようになる)。
定義されたクラスの「インスタンス」であるオブジェクトを生成するには「var演算子」を使い、「$obj = new HODE()」として変数に格納する。
オブジェクトが持つメンバ変数やメンバ関数を使う場合には、「->(アロー演算子)」を用いて、「$obj->func();」という形で使う。
メンバ関数内で、そのクラスのメンバ変数やメンバ関数を使用する場合は、「$this」という特別な変数を使い、「$this->hode」という形で使用する。
クラスと同名のメンバ関数を「コンストラクタ」と言い、これはインスアンス(オブジェクト)生成時に自動的に実行される。
「var」を使ったメンバ変数の定義でセットできるのは定数のみで、定数以外のものをセットしたい場合は、コンストラクタ内でセットする。
オブジェクト生成時の、クラス名の後の「(丸括弧)」は省略出来る。むしろ、コンストラクタに引数を渡す必要が無い場合は書く必要が無い。
「extends」を用いて「class 派生クラス extends 基底クラス{ 定義 }」とすると、基底クラス(派生元クラス)が持つ全てのメンバ変数とメンバ関数を兼ね備えた派生クラスを定義出来る。この事を、「継承」と言う。
基底クラスから継承したメンバ関数と同じ名前の関数を定義する(「オーバーライド」)事が出来る。
「::演算子(コロン2つ)」を用いて「HODE::func();」のように使うと、インスタンスを生成していないクラスのメンバ関数を使う事が出来る。ただし、メンバ関数内でメンバ変数は使えない。
メンバ関数をオーバーライドしても、「parent::メソッド名」で基底クラスで定義された方をコールできる。
「$this」は、生成されたオブジェクト自身へのリファレンス