В PHP 5 появилась возможность создавать абстрактные классы и методы. Например:

PHP:
  1. class Animal {
  2.     protected function run();
  3.     public function jump(){
  4.         echo "Jump! ";
  5.     }
  6. }

В этом листинге объявляется абстрактный класс Animal, содержащий метод jump и абстрактный метод run. Если попытаться создать объект этого класса, то мы увидим ошибку. Таже ошибочной является ситуация, когда не абстрактный класс содержит абстрактный метод. Подкласс абстрактного класса должен реализовывать абстрактные методы родительского класса или должен быть определен как абстрактный класс:

PHP:
  1. class Dog extends Animal {
  2.     public function run(){
  3.         echo "Dog: run! ";
  4.     }
  5. }
  6. $dog = new Dog();
  7. $dog->run();
  8. $dog->jump();

Результатом выполнения этого скрипта будет являться строка "Dog: run! Jump!".

Связанные записи