Абстрактные классы

PHP5 поддерживает определение абстрактных классов и методов. Создавать экземпляр класса, который был объявлен абстрактным, нельзя. Класс, в котором объявлен хотя бы один абстрактный метод, должен также быть объявлен абстрактным. Методы, объявленные как абстрактные, несут, по существу, лишь описательный смысл и не могут включать какой-либо функционал.

Пример абстрактного класса

<?php
abstract class AbstractClass {

/* Данный метод должен быть определён в дочернем классе */
abstract protected function getValue();

/* Общий метод */
public function print() {
print $this->getValue();
}

}

class ConcreteClass1 extends AbstractClass {

protected function getValue() {
return "ConcreteClass1";
}

}

class ConcreteClass2 extends AbstractClass {

protected function getValue() {
return "ConcreteClass2";
}

}

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

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

Код, предназначенный для прежних версий PHP, должен работать без изменений, если в нём отсутствуют классы или функции, именованные "abstract".