0

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

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

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

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

但我从骨子里觉得这不是一个很好的解决方案,没有我想要的那么迷人。它使我的单例类比应有的更加依附于应用程序。我想使用其他一些模式来访问这个数据库数据,然后是应用程序模型类。我会非常感谢任何线索或更好的解决方案——这不是“嘿,我被卡住了”或“嘿,我有一个错误”——我只是在寻找更好的解决方案。

4

1 回答 1

0

不确定我是否完全理解您的问题或想要的重点,但我会尝试。

在 ZF1 中,数据库适配器通常已经是单例的。可能会连接多个数据库,但每个数据库都需要唯一的标识。application.ini在or中对默认适配器设置的典型访问Bootstrap.php

$adapter = Zend_Db_Table::getDefaultAdapter();

提供对单个数据库表的访问和对Zend_Db_Table api 的访问的常用方法是构建DbTable 模型

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。

我希望这至少能接近。

于 2012-12-26T12:04:56.230 回答