Интерфейс или абстрактный класс: какой использовать? - PullRequest
301 голосов
/ 29 ноября 2009

Пожалуйста, объясните, когда я должен использовать PHP interface, и когда я должен использовать abstract class?

Как я могу изменить abstract class на interface?

Ответы [ 11 ]

1 голос
/ 22 декабря 2017

Просто хотел добавить пример, когда вам может понадобиться использовать оба. В настоящее время я пишу обработчик файла, связанный с моделью базы данных в ERP-решении общего назначения.

  • У меня есть несколько абстрактных классов, которые обрабатывают стандартную версию crud, а также некоторые специальные функции, такие как преобразование и потоковая передача для различных категорий файлов.
  • Интерфейс доступа к файлу определяет общий набор методов, которые необходимы для получения, хранения и удаления файла.

Таким образом, я получаю несколько шаблонов для разных файлов и общий набор методов интерфейса с четким различием. Интерфейс дает правильную аналогию с методами доступа, а не с базовым абстрактным классом.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...