Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
1. Смешивание логики.
Очень высокая трудоемкость (добавить 50 новых методов, в нашем примере) + заменить везде в приложении вызовы старых методов, на новые, а если в будущем придется кэширование выпиливать, то еще и повторить все действия назад.
достаточно встроить кэш на пути к Storage для всех сущностей.
но тогда мы лишаемся возможности обратиться к живым данным минуя кэш?
Если у вас в контроллере нужно часто решать — использовать кэш или нет, то давайте рассмотрим вашу задачу подробнее — мне в голову не приходит зачем это может быть нужно.
Если же делать правильный прокси или декоратор чтобы его можно было подсунуть вместо оригинального класса, то это потребует генерацию однотипного кода для каждого кэшируемого метода, а в случае с прокси, еще и для всех методов.Зачем? в этой статье как раз приводится работающий пример, который опровергает это утверждение.
Также остается вопрос с тем, что такие прокси надо обновлять при добавлении новых методовне надо! в этом и был смысл статьи, в PHP для этого есть магический метод __call()
Более того, делать кэширование и логирование правильно с помощью АОП,Мэтт Зандстра описывает, как использовать для этого Decorator.
Как по мне использование аннотаций в phpdoc для таких критичных вещей как кеширование или логирование, проверка аунтефикации пользователей и т.д. это не слишком хорошая идея. Как минимум этот код невозможно будет прогнать через анализаторы, повышается вероятность ошибок и т.д.
Использование паттерна Proxy для организации кэширования на PHP