Интерфейсы PHP и полиморфизм - Объяснение интерфейсов - Полное руководство по PHP 8

YOUTUBE · 28.11.2025 06:58

Ключевые темы и таймкоды

Введение в интерфейсы

0:05
  • Интерфейс определяет необходимые действия или методы объекта.
  • Пример с коллектором долгов: не важно, как они собирают деньги, главное - результат.
  • Интерфейс описывает, что нужно сделать, но не как это реализовать.

Создание интерфейса

0:45
  • Интерфейс создается с помощью ключевого слова interface.
  • Пример интерфейса для сборщика долгов: метод collect, который возвращает собранную сумму.
  • Конкретные классы реализуют интерфейс, реализуя все методы интерфейса.

Правила интерфейсов

2:34
  • Все методы в интерфейсе должны быть общедоступными.
  • Можно использовать магические методы для интерфейса.
  • Можно реализовать несколько интерфейсов, но сигнатуры методов должны совпадать.

Расширение интерфейсов

4:08
  • Интерфейс может расширять другие интерфейсы.
  • Конкретные классы должны реализовывать все методы интерфейса и всех расширенных интерфейсов.
  • В интерфейсах не могут быть свойства, но могут быть константы.

Практическая реализация

5:29
  • Пример с генератором случайных чисел для моделирования взыскания долгов.
  • Использование метода collect для возврата случайной суммы в пределах гарантированной суммы.
  • Проверка работы метода на практике.

Введение проблемы

7:09
  • Создание метода, который использует сборщика долгов в качестве аргумента.
  • Проблема: слишком подробная реализация, что усложняет поддержку кода.
  • Решение: использование интерфейса для упрощения изменения сборщиков долгов в будущем.

Коллекторское агентство и полиморфизм

9:51
  • В коллекторском агентстве используется генератор случайных чисел для сбора долгов.
  • Проблема в том, что метод collect принимает конкретную реализацию, что приводит к ошибкам.
  • Решение: использование интерфейсов для полиморфизма, что позволяет методу работать с разными реализациями.

Полиморфизм и интерфейсы

11:16
  • Полиморфизм позволяет объекту принимать множество форм.
  • Пример: использование ключевого слова instanceof для проверки, является ли объект экземпляром другого класса.
  • Интерфейсы позволяют объекту проходить несколько проверок instanceof, что делает его полиморфным.

Абстрактные классы и интерфейсы

12:26
  • Абстрактные классы могут иметь обычные методы и свойства, в отличие от интерфейсов.
  • Абстрактные классы могут расширять только один класс, в отличие от интерфейсов, которые могут реализовывать несколько интерфейсов.
  • Интерфейсы могут быть реализованы внутри абстрактных классов для улучшения кода.

Примеры использования интерфейсов

14:09
  • Пример с абстрактным классом base field и интерфейсом renderable.
  • Интерфейсы позволяют использовать полиморфизм и контракты без необходимости знать детали реализации.
  • Примеры из стандартов PSR, таких как интерфейс регистратора и интерфейс кэширования, показывают, как интерфейсы используются в реальных проектах.

Заключение

17:36
  • Интерфейсы позволяют менять реализацию во время выполнения, что делает код более гибким.
  • Пример с фреймворком RL, который предоставляет множество драйверов для кэширования и баз данных.
  • Призыв к подписке и поддержке канала для улучшения контента.