PHP

PHP: для чего нужны интерфейсы?

Для увеличения надёжности кода. Если ты в качестве типа параметра функции (или метода) укажешь интерфейс (это и в PHP 5 работает), то этим гарантируешь, что любой переданный в эту функцию объект будет содержать реализацию этого интерфейса.

P.S. Интерфейс - это разновидность контракта: https://ru.wikipedia.org/wiki/Контрактное_программирование
АН
Александр Нестеренко
66 484
Лучший ответ
Хочу только добавить, что интерфейс позволяет передать как параметр любой объект, его реализующий, что позволяет передавать абсолютно разнородные (не связанные наследованием) объекты. Хорошо это или плохо - вопрос другой. Что такое вообще "хорошо", когда говорят о ПХП - вопрос уже совершенно философский...
Интефейсы это не для PHP, а вцелом для объектно ориентированного программирования. С одной стороны это позволяет стандартизировать группу классов, которые обязаны иметь определенный набор публичных методов, с другой стороны, позволяет производить пассивную валидацию классов объектов, которые используются в качестве параметром. Т. е если есть класс
ClassRoom и для того чтобы добавить в него студента мы пользуемся методом addPerson, то это может выглядеть так:
ClassRoom::addPerson(Student $student)
где Student это класс студента
Но если мы будем учитывать, что добавлять можно еще и учителей (класс Teacher) то классы студентов и учителей можно объединить одним интерфейсом Person, с обязательным набором методов типа getName, getSurname и тд. И тогда вызов метода выше можно будет записать так:
ClassRoom::addPerson(Person $student)
теперь под ограничение сможет проходить и студент и преподаватель, к тому же у них обязательно буду присутствовать набор методов который мы ожидаем.
Интерфесов можно на класс навесить несколько