データベースにアクセスし、選択要素のオプションの値を入力するコードを配置するのに最適な場所を見つけようとしています。このコードをコントローラーに入れるのは不器用に思えます。フォームにデータベースを認識させることの欠点は何ですか?
質問する
63 次
1 に答える
1
フォームにデータベースを認識させることの欠点は、密結合されたコンポーネント (上記の場合は Zend_Form とデータベース アクセス層) が得られることですが、これら 2 つに共通点があってはなりません。
考えられるシナリオを想像してください。
- あるデータベースから別のデータベースにデータを移動します。または、その上にキャッシュ レイヤーを追加します。プロジェクト全体で db 固有の呼び出しを変更する必要があります。
- クラスの単体テストを行うことにしました。テスト (またはそのモック) で db 接続を維持する必要があります。
- 別の場所で同じフォーム クラスを使用し、select にデータベースからではなく、ini 構成ファイルからのオプションを詰め込みたいとします。
したがって、最善の解決策は、必要なデータを取得できる db 固有のマッパー クラスを用意することです。次に、このデータを依存関係としてフォームに渡します。そうすれば、フォームを外部レイヤーから独立させることができます (保守可能、テスト可能)。
したがって、フォームのオブジェクトを作成し、コントローラーでデータ ソース (それが何であれ) からのデータを渡すことができます。
于 2013-07-13T23:41:05.113 に答える