他の既存のクラスに似た変数や関数を有するクラスが必要になることがよ くあります。実際、全てのプロジェクトで使用可能な一般的なクラスを定 義し、このクラスを特定のプロジェクトの各々の要求に合わせて調整する というのは、良いやり方です。これを簡単に行うにために、他のクラスを 拡張してクラス作成することが可能です。拡張あるいは派生クラスは、基 底クラスの全ての変数と関数を有します。(これは、実際には誰も亡くなっ ていませんが、'継承'と呼ばれます) この派生クラスには、派生クラスの 定義で追加したものも含まれます。クラスから定義を取り除く、つまり、 既存の関数や変数を未定義とすることはできません。派生クラスは、常に 単一の基底クラスに依存します。つまり、多重継承は、サポートされてい ません。クラスは、キーワード'extends'を用いて拡張されます。
<?php
class Named_Cart extends Cart
{
var $owner;
function set_owner ($name)
{
$this->owner = $name;
}
}
?>
この例は、Cart の全ての変数及び関数に加えて変数$ownerと 関数 set_owner() を保持するクラス Named_Cart を定義しています。 この定義により、名前付きのカゴを通常の手段で作成し、カゴの保有者を 設定したり得たりすることができます。 名前付きのカゴで元のカゴクラスの関数を使うことも可能です。
$ncart = new Named_Cart; // 名前付きの籠を作成
$ncart->set_owner("kris"); // 籠の所有者の名前を設定
print $ncart->owner; // 籠の所有者を出力
$ncart->add_item("10", 1); // (籠から継承された機能)
"親と子"と呼ばれる関係もあります。ある親クラスを作成し、 この親クラスに基づく新しいクラス、つまり、子クラスを extendsにより作成します。 この新しい子クラスを使用することやこの子クラスに基づき他の クラスを作成することが可能です。
注意: クラスは、使用される前に定義されている必要があります! Cartを拡張した クラス Named_Cartを作成したい場合、 まず、Cartを定義する必要があります。 クラスNamed_Cartに基づき Yellow_named_cartという名前の他のクラスを 作成する場合、まずNamed_Cartを定義する 必要があります。要するに、クラスの定義の順序は、重要です。