问题描述
|
我的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或任何其他类的模型类,并且我将需要访问数据库对象。最好的方法是什么?我正在考虑在引导程序中实例化它并将其放入注册表中,以便它也可以在其他地方使用。这是好习惯吗?
如何在不复制代码的情况下基于config选项实例化它?因为它被列为资源,我是否在加倍努力?我应该只是尝试从新的模型类中利用资源吗?
谢谢..!
解决方法
为了将其放入模型中,我只需将其设为可在模型的构造函数中设置的属性即可,例如
class MyModel
{
private $db;
public function __construct(Zend_Db $db)
{
$this->db = $db;
}
您可以使用此方法在控制器中检索数据库资源
$db = $this->getInvokeArg(\'bootstrap\')->getResource(\'db\');
您还将在Zend_Registry
中找到已经注册的资源
$db = Zend_Registry::get(\'db\');