Введение в интерфейсы 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, который предоставляет множество драйверов для кэширования и баз данных. Призыв к подписке и поддержке канала для улучшения контента.