Я обнаружил, что делает это в моем коде в «кэш» работу, проделанной при инстанцировании моих Zend_Db_Table
моделей:Zend Framework - Таблица базы данных Singleton
if (Zend_Registry::isRegistered('x_table')) {
$x_table = Zend_Registry::get('x_table');
} else {
$x_table = new Default_Model_DbTable_X;
Zend_Registry::set('x_table', $x_table);
}
Это беспокоит меня, что этот метод не очень DRY и сегодня мне стало ясно, что одноэлементная модель, вероятно, будет лучшим способом сделать это. Проблема в том, что я никогда не писал ни одного класса. Когда я сделал некоторые поисковые запросы в Интернете, я нашел несколько комментариев от Zend_Db_Table
, но никаких реальных примеров.
У меня уже настроено кэширование метаданных.
- Как сделать монеты
Zend_Db_Table
? - Есть ли подводные камни или недостатки?
Edit: Моя причина думать синглтона был ответ, что я думал, что я мог бы просто иметь следующие вызовы в моем коде $x_table = new Default_Model_DbTable_X;
и один экземпляр будет возвращен, если он существовал. Если это возможно, я бы предпочел это решение.
Что вы делаете в своем коде, чтобы создать экземпляр нескольких экземпляров одной и той же таблицы в одном запросе? – Gordon
* (ссылка) * http://sourcemaking.com/design_patterns/singleton – Gordon
Я создаю CMS, а таблицы содержат контент. Блоки контента могут быть помещены на страницу, и на странице может быть более одного блока того же типа. Спасибо за ссылку! – Sonny