Задать вопрос

Являются ли трейты антипаттерном?

Доброй ночи.
Начну с конкретной задачи: есть две функции, которые, по сути, добавляют к сущности записи определенные категории, модифицируя их (им передается id записи, они модифицируют запись и сохраняют изменения в бд). Раньше это было приватными методами в одном классе, но вот сейчас потребовалось использовать эти функции в другом месте, и я не вижу лучшего способа это сделать, чем вынести их в трейт. Можно, конечно, вынести в класс, но как назвать класс, который ничего не делает, а только хранит две функции? Все остальные классы разделены по их задачам, здесь же задача туманна, поэтому трейт мне видится самым семантичным вариантом.

В то же время, класс, использующий трейт, менее прозрачен, поэтому вопрос: стоит ли вообще использовать трейты в качестве небольших библиотек самодостаточных функций? Можно ли сделать лучше без трейтов?

Заранее спасибо.
  • Вопрос задан
  • 418 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
DevMan
@DevMan
трейты кагбе и созданы для реюза кода.
остальное - дело личных пристрастий и религиозных убеждений.
Ответ написан
@BorisKorobkov Куратор тега PHP
Web developer
В общем случае - trait.
Но в зависимости от фреймворка могут быть и лучшие решения. Например, для Yii2 в вашем случае лучше использовать behaviors "before save".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы