Обновить

Комментарии 2

Зачем нужно создавать отдельный трейт WithCustomerInfo? Выглядит как будто его функции будут использоваться только в CustomerView, а если где-то еще нужна будет эта информация, то будет использоваться сам CustomerView

Повторный вызов одних и тех же методов View-класса может быть операцией снижающей производительность, поэтому часто к этим методам я прикручиваю кеширование, чтобы значение вычислялось только один раз.

Получение acf полей и стандартных данных типа get_the_title и так ведь кэшируется на текущий запрос. Или имеется ввиду случаи, когда перед выводом с данными происходят дополнительные трансформации?

Зачем нужно создавать отдельный трейт WithCustomerInfo? Выглядит как будто его функции будут использоваться только в CustomerView

Действительно, если методы будут использоваться только в CustomerView, то следует писать их прямо там без трейта. Я дергал для примера куски кода из разных проектов, в данном случае было два вида клиентов: компании и физлица, часть их полей пересекалась в трейте WithCustomerInfo

Получение acf полей и стандартных данных типа get_the_title и так ведь кэшируется на текущий запрос. Или имеется ввиду случаи, когда перед выводом с данными происходят дополнительные трансформации?

Все так. Кеширование необходимо в случаях, если в методе присутствуют какие-либо дополнительные вычисления. Особенно, если они касаются запросов к базе.

С другой стороны, если внутри метода вызывается что-либо, что может быть переопределено через хук, то мы не можем быть уверены, что оно всегда будет работать быстро. Особенно если проект большой и разработчиков на нем более чем один, или если среди разработчиков есть нейросети. Поэтому кешированием стоит пренебрегать только если вы на 100% уверены, что повторный вызов метода не будет генерировать дополнительных запросов к БД или выполнять что-нибудь ресурсозатратное.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации