私は Wiredesignz による HMVC 拡張で CodeIgniter を使用しています。
私の Web アプリは、主にテキスト記事を扱います。というモジュールがありますarticles
。記事モジュールのモデル には、articles_model
データベースを記事に変更する関数が含まれています。たとえば、次のように記事を更新します。
$this->articles_model->update_article();
ユーザー ダッシュボード用の別のモジュールがあります。ユーザーは、ダッシュボード内から記事を更新することがあります。このアクションはダッシュボード モジュール内のビューから実行されるため、要求はダッシュボード コントローラーから行われます。
この状況では、ダッシュボード コントローラーが記事モデルと通信できるようにするにはどうすればよいでしょうか? これまでに出くわしたいくつかのオプションは次のとおりです。
update_article()
記事コントローラーで関数を作成します。articles_model
同じ名前の関数を呼び出すだけです。ダッシュボード コントローラーで、記事コントローラー関数を呼び出しますupdate_article()
。これは、モジュラー設計では、コントローラーが異なるモジュール間の通信ポイントである必要があることを読んだためです(source)。また、コントローラー同士は決して会話してはならないという意見も見ました。したがって、私の混乱。update_article()
で関数を複製することもできdashboard_model
ます。このように、ダッシュボード コントローラーは、独自のモジュール内で独自のモデルを呼び出すだけで済みます。update_article()
関数はダッシュボード コントローラーだけでなく、他のかなりの数のコントローラーによっても呼び出されるため、私の直感では、これは正しい方法ではないとわかりました。これにより、多くの重複コードが発生します。
アドバイスをいただければ幸いです。