Композиция вместо лишнего наследования
Композиция передаёт объекту помощников; наследование выражает устойчивое отношение «является».
new OrderService($repository, $clock)Пример
OrderService получает repository и clock через конструктор. Он координирует сценарий, но не наследуется от PDO и не создаёт глобальные сервисы внутри метода.
Преимущество
Зависимости видны в сигнатуре, легко заменяются в тесте и имеют отдельные контракты.
Наследование
Наследование полезно для реального подтипа, который соблюдает ожидания базового класса. Повторное использование нескольких строк — недостаточная причина.
Ошибка
Service Locator скрывает зависимости за глобальным контейнером. Код запускается, но контракт класса нельзя понять по конструктору.
Задание
Разделите отправку уведомления на Message, Recipient и Transport; подставьте тестовый Transport.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Связанные материалы
Источники и проверка
- PHP Documentation Group — структурный источник, без внешней ссылки
Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.