Zend: Как получить доступ к БД непосредственно в модели - PullRequest
0 голосов
/ 24 мая 2011

Мои подробности о БД в моем файле конфигурации Zend следующие:

resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = bar
resources.db.params.dbname = foo

Они используются для установки адаптера БД по умолчанию всякий раз, когда я использую класс Zend_DB_Table, и это нормально.

Теперь я пишу класс модели, который не расширяет Zend_DB_Table или какой-либо другой класс, и мне понадобится доступ к объекту БД.Какой лучший способ пойти по этому поводу?Я думал об его создании в начальной загрузке и внесении в реестр, чтобы он был доступен и в других местах.Это хорошая практика?

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

Спасибо ..!

1 Ответ

2 голосов
/ 24 мая 2011

Чтобы включить его в ваши модели, я бы просто сделал его свойством, устанавливаемым в конструкторе модели, например,

class MyModel
{
    private $db;

    public function __construct(Zend_Db $db)
    {
        $this->db = $db;
    }

Вы можете получить ресурс db в ваших контроллерах, используя

$db = $this->getInvokeArg('bootstrap')->getResource('db');

Вы также найдете ресурс, уже зарегистрированный в Zend_Registry, а также

$db = Zend_Registry::get('db');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...