Zend_Db_Table
モデルをインスタンス化するときに行われた作業を「キャッシュ」するために、コードでこれを行っていることに気付きました。
if (Zend_Registry::isRegistered('x_table')) {
$x_table = Zend_Registry::get('x_table');
} else {
$x_table = new Default_Model_DbTable_X;
Zend_Registry::set('x_table', $x_table);
}
この方法はあまり DRY ではないことが気になり、今日、これを行うにはおそらくシングルトン パターンの方が優れていることに気付きました。問題は、シングルトン クラスを作成したことがないことです。Web 検索を行ったところ、シングルトンに関する率直なコメントがいくつか見つかりましZend_Db_Table
たが、実際の例はありませんでした。
既にメタデータ キャッシュを構成しています。
Zend_Db_Table
モデルをシングルトンにするにはどうすればよいですか?- 落とし穴や欠点はありますか?
編集:シングルトンが答えだと考える理由は、コードに次の呼び出しを単純に含めることができ、$x_table = new Default_Model_DbTable_X;
存在する場合は単一のインスタンスが返されると思ったからです。これが可能であれば、私はその解決策を好みます。