ZF版本:1.11.2
我想创建一个抽象类,它保存我的db适配器。简化它看起来像这样:
<?php
class Application_Model_DbTable_Abstract extends Zend_Db_Table_Abstract
{
protected $_dbAdapter = null;
/**
* @return null
*/
public function getDbAdapter()
{
return $this->_dbAdapter;
}
/**
* @param null $dbAdapter
*/
public function setDbAdapter($dbAdapter)
{
$this->_dbAdapter = $dbAdapter;
}
public function __construct()
{
\Zend_Debug::dump($this->getAdapter(), 'Datei: ' . __FILE__ . '<br/>Zeile: ' . __LINE__, true); die;
}
}
但我的转储返回null。在基本模型类(从Zend_D b_Table_Abstract扩展)中,相同的转储返回Zend_Db_Adapter_Pdo_Mysql对象。为什么呢?
答案 0 :(得分:0)
我只是看看Zend DB源代码只是为了刷新我的记忆。如果您将构造函数更改为:
public function __construct($config = array())
{
parent::__construct($config);
\Zend_Debug::dump($this->getAdapter(), 'Datei: ' . __FILE__ . '<br/>Zeile: ' . __LINE__, true); die;
}
它应该更像你期待的工作。
回答评论中的问题:getAdapter()
的{{1}}方法只返回数据库适配器变量中的任何内容。它对默认值没有任何作用。此外,由于您的类会覆盖该方法,因此将使用您的版本。
Zend_Db_Table_Abstract
类中的构造函数将设置默认值(如果未提供),因此在我的示例中调用父构造函数应该确保设置了默认适配器。
此外,ZF1已经过了一段时间。您不应该将它用于新的应用程序,而应该计划迁移当前的应用程序。