13 | PHP — Приоритет методов при наследовании, трейты и принципы IoC/DI
MediaTen – digital-агентство | Приводим в порядок код и мысли
Разбираем порядок приоритетов при наследовании и повторном использовании кода через трейты: как решать конфликты методов, создавать псевдонимы и менять область видимости. Во второй части — глубокое объяснение инверсии управления (IoC) и внедрения зависимостей (DI): контейнеры, автоподстановка, сервис‑провайдеры, ограничения и антипаттерны (сервис‑локатор). Практичные рекомендации по конструкторному/методному внедрению, правилу четырёх зависимостей и разделению ответственности. Таймкоды: 00:00:03 — Приоритетность методов при наследовании: общая идея 00:01:01 — Пример: трейт и класс с одинаковым методом `safe` 00:01:38 — Пример: базовый родительский класс vs трейт 00:02:34 — Конфликт методов в трейтах (два трейта `talking` и `voice`) 00:03:34 — Решение конфликта: `insteadof` и ручная регулировка 00:04:14 — Изменение области видимости метода (public → private) 00:04:43 — Создание псевдонима метода: `as` и смена видимости 00:05:39 — Объединение трейтов и риски путаницы 00:06:46 — Введение в инверсию управления (IoC): понятие и назначение 00:07:38 — Преимущества внедрения зависимостей (тестируемость, подмена реализаций) 00:08:35 — Принцип IoC: слабая связанность и «Hollywood»‑принцип 00:09:30 — IoC vs контейнер: различия и назначение контейнера 00:11:29 — Функции контейнеров: хранение зависимостей и автоподстановка 00:13:30 — Внедрение через конструктор: пример с парсером данных 00:14:24 — Преимущества `constructor property promotion` в PHP 00:15:15 — Внедрение через метод...