PHP модель дизайна с кешированием - PullRequest
0 голосов
/ 27 сентября 2011

Я разрабатываю модель для приложения, которое будет получать / устанавливать объекты в удаленной базе данных. Для производительности нам необходимо кэшировать данные локально. Я читал в разных ветках, что лучше поместить логику кэширования в родительскую модель, а не в основной контроллер. Это, вероятно, основной вопрос ООП, но я не уверен насчет реализации.

В моем дизайне PHP у меня есть три объекта. Назовем их P (для родительской модели), L (для локальных) и R (для удаленных). В настоящее время я планирую, чтобы они взаимодействовали так:

class P
{
   var $column1;
   var $column2;
   ...
   var $R;
   var $L;
   ...

   function __construct()
   {
      $this->R = new Remote();
      $this->L = new Local();
   }

   function get($id)
   {
      if (is_cached())
      {
         $this->L->($id);
      }
      else
      {
         $this->R->get($id);
      }
   }
}

class R
{
   public function get($id)
   {
      return $this->remoteDB->get($id);
   }
}

class L
{
   public function get($id)
   {
      return $this->localDB->get($id);
   }
}

Проблема, с которой я сталкиваюсь в этом проекте, заключается в том, что это A), вероятно, требующий функции load () во всех трех объектах, что кажется неэффективным, и B) требует передачи свойств от одного объекта к другому (а не просто ссылки на них напрямую).

Какие-нибудь предложения для лучшего способа сделать это?

1 Ответ

0 голосов
/ 27 сентября 2011

Я бы посоветовал вам взглянуть на существующие платформы, которые имеют дело с уровнями доступа к базе данных и имеют встроенное управление кешем.

A Несколько: Kohana, Zend, Code Ignitor

Я также не уверен, почему вы не можете абстрагировать свои функции загрузки и ваши модели расширяют абстракцию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...