Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework singleton类中的Zend模型访问-最佳方法_Zend Framework_Design Patterns_Model_Singleton - Fatal编程技术网

Zend framework singleton类中的Zend模型访问-最佳方法

Zend framework singleton类中的Zend模型访问-最佳方法,zend-framework,design-patterns,model,singleton,Zend Framework,Design Patterns,Model,Singleton,我正在寻找在singleton类(在ZF1.x中)中访问单表数据的最佳模式/方法。详情如下: 我有一个singleton类(比如Zend_Date),它为我提供了一些与应用程序实际非常分离的基本抽象内容 在这个类中,有两点,我需要访问一个db表,并对其进行一些基本操作 在这个单例的函数中使用我的常规ZF models类不是问题。它很好用。现在它看起来像: class My_ZF_Singleton { ... public function someFunctionInMyS

我正在寻找在singleton类(在ZF1.x中)中访问单表数据的最佳模式/方法。详情如下:

  • 我有一个singleton类(比如Zend_Date),它为我提供了一些与应用程序实际非常分离的基本抽象内容
  • 在这个类中,有两点,我需要访问一个db表,并对其进行一些基本操作
在这个单例的函数中使用我的常规ZF models类不是问题。它很好用。现在它看起来像:

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

但我骨子里觉得这不是一个很好的解决方案,也没有我想要的那么吸引人。它使我的单例类更加依附于应用程序。我想使用一些其他模式来访问这个db数据,然后访问应用程序模型类。如果有任何线索或更好的解决方案,我会非常感激——这不是“嘿,我遇到麻烦了”或“嘿,我有错误了”——我只是在寻找更好的解决方案。

我不确定我是否完全理解你的问题,或者我想知道重点是什么,但我会尝试

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

$adapter=Zend_Db_Table::getDefaultAdapter()

提供对单个数据库表的访问并授予对api的访问权的常用方法是构建:

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

我希望这至少能实现

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'
}