单例类中的Zend模型访问 - 最佳方法

时间:2012-12-26 09:58:05

标签: zend-framework design-patterns model singleton

我正在寻找最佳模式/方法来访问单例类中的一个表数据(在ZF 1.x中)。详情:

  • 我有一个单例类(就像Zend_Date一样),它为我提供了一些与应用程序现实非常分离的基本抽象内容。
  • 在本课程中,有两点,我需要访问一个db表,我需要对它进行一些基本的操作。

在这个单例的函数中使用我的常规ZF模型类不是问题。它工作正常。现在它看起来像:

class My_ZF_Singleton
{
    ...
    public function someFunctionInMySingleton()
    {
        ...
        $oModel = new Model_My_Model_Form_ZF_Application();
        $oModel->letsDoSomeStuffWithDb();
        ...
    }
    ...
}

但是我觉得这不是一个很好的解决方案,不像我想的那样魅力。它使我的单例类更多地附加到应用程序然后它应该是。我想使用一些其他模式来访问此db数据然后应用程序模型类。我会非常感谢任何线索或更好的解决方案 - 它不是“嘿,我被卡住了”或“嘿,我有错误” - 我只是在寻找更好的解决方案。

1 个答案:

答案 0 :(得分:0)

不确定我是否完全明白你的问题,或者想要点可能,但我会尝试。

在ZF1中,数据库适配器通常是单例。 Multiple databases maybe connected但每个都需要一个唯一的标识。典型访问application.iniBootstrap.php

中的默认适配器设置

$adapter = Zend_Db_Table::getDefaultAdapter();

提供对单个数据库表的访问权限并允许访问Zend_Db_Table api的常用方法是构建DbTable model

class Application_Model_DbTable_TableName extends Zend_DbTable_Abstract
{
    protected $_name = 'Table_Name' //required if classname does not match table name
    protected $_primary = 'primary_key_column_name'//optional, use if primary key is not 'id'
}

您可以将此类视为单个表的默认数据库适配器的实例(在映射器中非常有效)。您还可以向此类添加函数以覆盖或添加到默认的Zend_Db_Table api。

我希望至少接近这一点。