Абстрактные классы используются в PHP для определения абстрактных объектов. Чтобы понять, что определяет абстрактный объект, давайте рассмотрим такое понятие, как “пища”. Все мы знаем, что такое “пища”, но не всегда смотрим на то, из чего конкретно она приготовлена. Вы видели самые разнообразные виды пищи (бифштексы, цыпленок и тому подобное), однако само по себе понятие пищи является абстрактным — оно существует только как обобщение более конкретных вещей. Подобная идея справедлива также и для абстрактных классов.

В ООП абстрактные классы предназначены для того, чтобы создать суперкласс, который будет определять абстрактные характеристики его классов-наследников. На самом деле абстрактные классы могут содержать в себе какой-либо код, а могут быть вообще без кода; кроме этого, на их основе нельзя создать экземпляр напрямую. Рассмотрим пример:

Код:
<?php
   abstract class Number {
      private $value;
      abstract public function value();
      public function reset() {
         $this->value = NULL;
      }
   }
   class Integer extends Number {
      private $value;
      public function value() {
         return (int)$this->value;
      }
   }
   $num = new Integer; /* Все в порядке */
   $num2 = new Number; /* Возникнет ошибка */
?>

Тут мы создали абстрактный класс Number, который является расширением класса Integer. Поскольку класс Number объявлен как abstract, на его основе нельзя создавать экземпляры. Если посмотреть на класс Number, то можно увидеть, что в нем определены две функции: value () и reset (). Абстрактный класс может не содержать код для методов, хотя при необходимости его можно добавить. Что же касается класса Number, то поскольку функция value () является специфической для конкретного типа числа, она реализуется в классе-наследнике. Чтобы разработчик мог реализовать такое поведение в своем коде, используется ключевое слово abstract, указывающее на то, что это просто заполнитель в классе Number. Однако это не относится к методу reset (), который остается неизменным для любого конкретного типа числа.