Использование Zend Framework Db Tables без MVC

Я пытаюсь использовать Zend Framework без использования структуры MVC, в частности классов Db_Table.

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

class DBTables_Templates extends Zend_Db_Table_Abstract  
{  
    protected $_name = "templates";  
}  

Когда я пытаюсь создать экземпляр этого класса (он включен нормально), я получаю следующую ошибку:

Неустранимая ошибка: неперехваченное исключение 'Zend_Db_Table_Exception' с сообщением 'Не найден адаптер для DBTables_Templates'

Кто-нибудь знает, как я создаю и включаю адаптер базы данных для использования Db_Table классов?

Любые указатели приветствуются! Я использую последнюю версию ZF.


person Stuart    schedule 06.10.2009    source источник


Ответы (1)


Вам необходимо создать Zend_Db_Adapter, который является классом, который вы используете для подключения к базе данных.

$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'     => '127.0.0.1',
    'username' => 'webuser',
    'password' => 'xxxxxxxx',
    'dbname'   => 'test'
));

Или вы можете использовать метод factory(), чтобы сделать создание более настраиваемым:

$db = Zend_Db::factory('Pdo_Mysql', array(
    'host'     => '127.0.0.1',
    'username' => 'webuser',
    'password' => 'xxxxxxxx',
    'dbname'   => 'test'
));

См. http://framework.zend.com/manual/en/zend.db.html#zend.db.adapter.connecting

Затем укажите этот объект адаптера для своего класса таблицы. Для этого есть как минимум три способа:

  • Установите значение по умолчанию для всех таблиц:

    Zend_Db_Table_Abstract::setDefaultAdapter($db);
    
  • Укажите адаптер для конструктора таблицы:

    $table = new MyTable( array('db'=>$db) );
    
  • Сохраните адаптер в реестре и укажите его в таблице или установите по умолчанию:

    Zend_Registry::set('my_db', $db); 
    $table = new MyTable( array('db'=>'my_db') );
    // alternatively:
    Zend_Db_Table_Abstract::setDefaultAdapter('my_db');
    

См. http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.constructing

person Bill Karwin    schedule 06.10.2009