Створення і використання інтерфейсів
Інтерфейси багато в чому схожі з абстрактними класами. Інтерфейс - це шаблон, який задає поведінку одного або більше класів.
Ось основні відмінності між інтерфейсами і абстрактними класами:
- Жоден метод не може бути описаний в інтерфейсі. Вони все абстрактні. В абстрактному класі можуть бути і не абстрактні методи.
- Інтерфейс не може містити полів - тільки методи.
- Клас імплементує інтерфейс, і клас успадковує або розширює інший клас.
- Клас може імплементувати кілька інтерфейсів одночасно. Цей же клас може успадковувати інший клас. Але у дочірнього класу може бути тільки один супер-клас (абстрактний чи ні).
Як і абстрактний клас, інтерфейс оголошує кілька методів, які повинні бути реалізовані в будь-якому класі, який імплементує даний інтерфейс. Синтаксис виглядає так:
public function aMethod ();
public function anotherMethod ();
Щоб створити клас, який імплементує той чи інший інтерфейс, напишіть так:
class MyClass implements MyInterface
public function aMethod ()
public function anotherMethod ()
Інтерфейси корисні у випадках, коли потрібно створити кілька незв'язаних між собою класів, у яких буде загальна функціональність.
Наприклад, веб-форум може містити клас Member для учасників форуму і клас Topic для тих, що створюються учасниками форуму. У щодо спадкування, ці класи швидше за все не будуть залежати один від одного, так як вони виконують абсолютно різні функції.
Проте, давайте припустимо, що нам потрібно буде діставати їх і записувати в базу даних як об'єкти класу Member, так і об'єкти Topic. Для цього ми створимо інтерфейс Persistable, в якому будуть методи для збереження об'єктів в БД і вилучення їх звідти:
public function save ();
public function load ();
public function delete ();
Тепер давайте створимо клас Member і імплементуємо для нього інтерфейс Persistable. Це означає, що в інтерфейсі повинні бути методи save (), load () і delete ():
class Member implements Persistable
public function __construct ($ username, $ location, $ homepage)