Для увеличения надёжности кода. Если ты в качестве типа параметра функции (или метода) укажешь интерфейс (это и в PHP 5 работает), то этим гарантируешь, что любой переданный в эту функцию объект будет содержать реализацию этого интерфейса.
P.S. Интерфейс - это разновидность контракта: https://ru.wikipedia.org/wiki/Контрактное_программирование
PHP
PHP: для чего нужны интерфейсы?
Хочу только добавить, что интерфейс позволяет передать как параметр любой объект, его реализующий, что позволяет передавать абсолютно разнородные (не связанные наследованием) объекты. Хорошо это или плохо - вопрос другой. Что такое вообще "хорошо", когда говорят о ПХП - вопрос уже совершенно философский...
Интефейсы это не для PHP, а вцелом для объектно ориентированного программирования. С одной стороны это позволяет стандартизировать группу классов, которые обязаны иметь определенный набор публичных методов, с другой стороны, позволяет производить пассивную валидацию классов объектов, которые используются в качестве параметром. Т. е если есть класс
ClassRoom и для того чтобы добавить в него студента мы пользуемся методом addPerson, то это может выглядеть так:
ClassRoom::addPerson(Student $student)
где Student это класс студента
Но если мы будем учитывать, что добавлять можно еще и учителей (класс Teacher) то классы студентов и учителей можно объединить одним интерфейсом Person, с обязательным набором методов типа getName, getSurname и тд. И тогда вызов метода выше можно будет записать так:
ClassRoom::addPerson(Person $student)
теперь под ограничение сможет проходить и студент и преподаватель, к тому же у них обязательно буду присутствовать набор методов который мы ожидаем.
Интерфесов можно на класс навесить несколько
ClassRoom и для того чтобы добавить в него студента мы пользуемся методом addPerson, то это может выглядеть так:
ClassRoom::addPerson(Student $student)
где Student это класс студента
Но если мы будем учитывать, что добавлять можно еще и учителей (класс Teacher) то классы студентов и учителей можно объединить одним интерфейсом Person, с обязательным набором методов типа getName, getSurname и тд. И тогда вызов метода выше можно будет записать так:
ClassRoom::addPerson(Person $student)
теперь под ограничение сможет проходить и студент и преподаватель, к тому же у них обязательно буду присутствовать набор методов который мы ожидаем.
Интерфесов можно на класс навесить несколько
Похожие вопросы
- Нужна помощь по PHP
- Для чего нужен PHP?
- Регистрация php обработчик, нужна помощь
- PHP Polling ChatGPT
- Как оптимизировать структуру сайта php. на готовом шаблоне
- Не работает PHP include на хостинге
- Для чего нужна файловая система PHP?
- Зачем нужны фреймворки php? Что они дают, чего сам php не имеет?
- Хеширование пароля php
- Для чего нужны функции pack () и unpack () в PHP ?