В большинстве случаев они не нужны, а когда их используют там где нужна хоть какая то кастомизация то они создают больше неявных проблем нежели решают
Trait - это просто include кода для псевдолегализации копипасты. Оправданы для подключения дефолтной реализации методов интерфейса. Если не лениться, то остальной повторяющийся код можно декомпозировать как и раньше, вынеся в сервисы и статические хелперы. Тогда копипасты не будет и трейты будут не нужны. Так что трейты (и даже наследование) в большинстве своём - вещи для ленивых.
трейты это как goto в ооп. Удобная штука если ты хочешь проблемы с декомпозицией под ковер запихнуть. Проблемы оно правда не решает.
Обсуждают сегодня