Створення і використання інтерфейсів в php

Створення і використання інтерфейсів

Інтерфейси багато в чому схожі з абстрактними класами. Інтерфейс - це шаблон, який задає поведінку одного або більше класів.

Ось основні відмінності між інтерфейсами і абстрактними класами:

  • Жоден метод не може бути описаний в інтерфейсі. Вони все абстрактні. В абстрактному класі можуть бути і не абстрактні методи.
  • Інтерфейс не може містити полів - тільки методи.
  • Клас імплементує інтерфейс, і клас успадковує або розширює інший клас.
  • Клас може імплементувати кілька інтерфейсів одночасно. Цей же клас може успадковувати інший клас. Але у дочірнього класу може бути тільки один супер-клас (абстрактний чи ні).

Як і абстрактний клас, інтерфейс оголошує кілька методів, які повинні бути реалізовані в будь-якому класі, який імплементує даний інтерфейс. Синтаксис виглядає так:

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)

Схожі статті