オブジェクトアブストラクション

PHP 5 では、抽象クラスとメソッドが導入されました。 abstractとして宣言されたクラスのインスタンスを生成することはできません。 1つ以上の抽象メソッドを含む全てのクラスもまた抽象クラスとなります。 abstractとして定義されたメソッドは、そのメソッドの外観を宣言するのみで、 実装を定義することはできません。

抽象メソッドを実装するクラスは、同等以下の 可視性で 定義される必要があります。抽象メソッドがprotectedとして定義された場合、 その関数の実装はprotectedまたはpublicのどちらかとして定義する必要が あります。

例 19-16. 抽象クラスの例

<?php
abstract
class AbstractClass
{
    
// 拡張クラスにこのメソッドの定義を強制する
    
abstract protected function getValue();

    
// Common method
    
public function printOut() {
        print
$this->getValue();
    }
}

class
ConcreteClass1 extends AbstractClass
{
    
protected function getValue() {
        return
"ConcreteClass1";
    }
}

class
ConcreteClass2 extends AbstractClass
{
    
public function getValue() {
        return
"ConcreteClass2";
    }

}

$class1 = new ConcreteClass1;
$class1->printOut();

$class2 = new ConcreteClass2;
$class2->printOut();
?>

'abstract'という名前のユーザー定義関数または関数を有さない コードは修正なしに動作します。