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

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

Пример 19-17. Пример абстрактного класса

<?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".