Composition over Inheritance?

Ответ

Предпочтительнее композиция (включать объекты и делегировать), чем наследование для повторного использования поведения. Наследование создает жесткую связь и может приводить к взрывному росту иерархии.

// Наследование: хрупко
class LoggingRepository extends UserRepository { ... }

// Композиция: гибко
class LoggingUserRepository implements UserRepositoryInterface {
    public function __construct(private UserRepositoryInterface $inner, private Logger $logger) {}
}

Наследование уместно для истинной иерархии типов (is-a), не для переиспользования кода.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.