Как получить доступ к защищенному свойству Zend_Db_Adapter - PullRequest
1 голос
/ 07 октября 2009

Мне нужно изменить значение защищенных $ _autoQuoteIdentifiers, но я не знаю, как.

class ZendX_Db_Adapter_Firebird extends Zend_Db_Adapter_Abstract
{
    protected $_autoQuoteIdentifiers = true;
.
.
.

Хорошо, я могу изменить это прямо в классе, но это не лучший способ.

Мое application.ini:

resources.db.adapter = Firebird
resources.db.params.dbname = "/tmp/test.fdb"
resources.db.params.host = "127.0.0.1"
resources.db.params.username = sysdba
resources.db.params.password = masterkey
resources.db.params.adapterNamespace = "ZendX_Db_Adapter"

И мой Bootstrap.php:

protected function _initDatabase()
    {
        $this->bootstrap('db');
        $db = $this->getResource('db');
        $db->setFetchMode(Zend_Db::FETCH_OBJ);
        Zend_Registry::set('db', $db);
        Zend_Db_Table_Abstract::setDefaultAdapter(Zend_Registry::get('db'));
    }

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 08 октября 2009

Справочное руководство Zend дает ответ: Справочное руководство

$options = array(
    Zend_Db::AUTO_QUOTE_IDENTIFIERS => false
);

$params = array(
    'host'           => '127.0.0.1',
    'username'       => 'webuser',
    'password'       => 'xxxxxxxx',
    'dbname'         => 'test',
    'options'        => $options
);

$db = Zend_Db::factory('Firebird', $params);
0 голосов
/ 07 октября 2009

Вы уверены, что не можете набрать $this->setAutoQuoteIdentifiers(false) на адаптере? :)

0 голосов
/ 07 октября 2009

Расширьте класс Firebird одним из ваших собственных и настройте адаптер, чтобы вместо него было указано «My_Firebird» (или что-то еще). Таким образом, вы можете изменять свойства в классе (даже делая их настраиваемыми с помощью переданной конфигурации).

...