![]()
|
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7">第 14 章 クラスとオブジェクトクラスクラスは、変数およびこれらの変数で動作する関数の集まりです。 クラスは次のような構文により定義されます。
この例は、籠の中の物と籠にアイテムを加えたり除いたりする二つの関数への 連想配列からなる Cart という名前のクラスを定義します。
クラスは型、つまり、実際の変数の雛型です。new演 算子により所望の型の変数を作成する必要があります。
この例は、クラスCartのオブジェクト $cartおよび$another_cartを作成 します。$cartオブジェクトの関数 add_item()が商品番号10の商品一つが カートに追加されています。商品番号0815の商品3つが$another_cartに追 加されています。 $cart と $another_cartは共に関数 add_item()、 remove_item() と変数items を有しています。これらは、異なる関数およ び変数です。オブジェクトは、ファイルシステムのディレクトリに似たよ うなものであると考えられます。ファイルシステムでは、別のディレクト リに置く限り、二つの異なるREADME.TXTを保持することが可能です。ディ レクトリではトップディレクトリから各ファイルにアクセスするには、フ ルパス名を入力する必要がありますが、これと全く同様にコールしたい関 数の完全な名前を指定する必要があります。PHPの用語では、最上位のディ レクトリはグローバル名前空間であり、パス名のセパレータは、->と なります。つまり、$cart->items と $another_cart->items は、 二つの異なる変数です。$cart->items という名前の変数は、 $cart->$items ではない、つまり、PHPの変数名はドル記号を一つだけ 有することに注意して下さい。
クラス定義の内部では、プログラムでアクセス可能なオブジェクト名を知 ることはできません。Cartクラスが書かれている時点では、そのオブジェ クトが後で $cart という名前となるか $another_cart となるかはわかり ません。つまり、Cartクラスの中では $cart->items と書くことはで きないのです。代わりに、クラスの中からそのクラス内の関数や変数にア クセスするために、疑似変数 $this を使用することが可能です。$this は、「自分自身の」または「カレントのオブジェクト」と読み変えること ができます。つまり、'$this->items[$artnr] += $num' は、「同じクラ ス内の配列 items の $artnr カウンタに $num を追加する」または「カ レントオブジェクト内の配列 items の $artnr カウンタに $num を追加 する」と読み変えることが可能です。
|