0

シングルトン クラス (ZF 1.x) で 1 つのテーブル データにアクセスするための最適なパターン/アプローチを探しています。詳細に:

  • 私は 1 つのシングルトン クラス (たとえば Zend_Date のようなもの) を持っています。これは、アプリケーションの現実から切り離された、いくつかの基本的な抽象的なものを作成します。
  • このクラスでは、2 つの点で、1 つの db テーブルにアクセスする必要があり、それに対していくつかの基本的な操作を行う必要があります。

このシングルトンの関数内で通常の ZF モデル クラスを使用しても問題ありません。それは正常に動作します。次のようになります。

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

しかし、それはあまり良い解決策ではなく、私が望むほど魅力的ではないことを私の骨の中で感じています. それは私のシングルトンクラスをよりアプリケーションに結びつけます。このデータベースデータにアクセスしてからアプリケーションモデルクラスにアクセスするために、他のパターンを使用したいと思います。手がかりやより良い解決策に非常に感謝しています-それは「問題が解決していない」または「エラーが発生した」ではありません-より良い解決策を探しているだけです.

4

1 に答える 1

0

あなたの質問をよく理解していないか、要点を知りたいかどうかはわかりませんが、試してみます.

ZF1 では、データベース アダプタは通常、すでにシングルトンです。複数のデータベースに接続できますが、それぞれに一意の ID が必要です。application.iniまたはのデフォルト アダプタ セットアップへの一般的なアクセス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 に答える