Где поставить код очистки кеша - PullRequest
1 голос
/ 03 августа 2011

Сейчас я собираю CMS на основе ZF, и в настоящее время я кеширую свой Zend_Navigation объект, а также HTML-код, отображаемый renderMenu().Таким образом, в данный момент, когда меню изменяется, я должен вызывать следующие строки в соответствующем действии:

        $cache = Zend_Registry::get("cache");
        $cache->remove("menu");
        $frontcache = Zend_Registry::get("frontcache");
        $frontcache->remove("menuhtml");

У меня есть siteController для обработки изменений в структуре меню и pageController для обработки add /редактировать / удалять отдельные страницы, поэтому код используется в действиях на обоих этих контроллерах.

Я бы, очевидно, хотел бы поместить этот код в один метод, который я могу вызвать, но где будет наиболее подходящее место?Помощник действий?Родительский класс для siteController & pageController?Должен ли я объединить контроллеры?Или что-то еще?

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Вы смотрели на использование Action Helper (http://framework.zend.com/manual/en/zend.controller.actionhelpers.html)? Это даст вам место, независимое от ваших контроллеров, которое каждый контроллер все еще сможет вызывать.

1 голос
/ 03 августа 2011

Как насчет услуги? Application_Service_Navigation (или любой appnamespace, который вы используете) хранится в application/services/Navigation.php, реализуя интерфейс, представляющий операции CRUD в этих двух контроллерах CMS. Затем внутренне эти методы могут использовать кеш, как вы описали. Контроллеры вызывают сервисные методы и не знают операций кэша.

...