Я разрабатываю модель для приложения, которое будет получать / устанавливать объекты в удаленной базе данных. Для производительности нам необходимо кэшировать данные локально. Я читал в разных ветках, что лучше поместить логику кэширования в родительскую модель, а не в основной контроллер. Это, вероятно, основной вопрос ООП, но я не уверен насчет реализации.
В моем дизайне 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) требует передачи свойств от одного объекта к другому (а не просто ссылки на них напрямую).
Какие-нибудь предложения для лучшего способа сделать это?