УрокПроверено 2026Локальный прогресс

Композиция вместо лишнего наследования

Композиция передаёт объекту помощников; наследование выражает устойчивое отношение «является».

new OrderService($repository, $clock)

Пример

OrderService получает repository и clock через конструктор. Он координирует сценарий, но не наследуется от PDO и не создаёт глобальные сервисы внутри метода.

Преимущество

Зависимости видны в сигнатуре, легко заменяются в тесте и имеют отдельные контракты.

Наследование

Наследование полезно для реального подтипа, который соблюдает ожидания базового класса. Повторное использование нескольких строк — недостаточная причина.

Ошибка

Service Locator скрывает зависимости за глобальным контейнером. Код запускается, но контракт класса нельзя понять по конструктору.

Задание

Разделите отправку уведомления на Message, Recipient и Transport; подставьте тестовый Transport.

Локальный прогресс

Закрепите материал

Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.

Связанные материалы

Источники и проверка

  • PHP Documentation Group — структурный источник, без внешней ссылки

Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.

Данные этого сервиса

Настройки cookie и локальных данных

Аналитика

Текущий статус: не выбран. До согласия обе аналитические системы не загружаются.

Локальные данные

Удаление затрагивает только ключи PHP-сервиса в этом браузере и требует подтверждения.

Политики

Политика конфиденциальности · Политика использования файлов cookie