プログラムの「最良の方法」を単純に提供するのはかなり困難です。
ただし、MVC パターンに飛び込んで、その構造について学ぶことをお勧めします。その後、独自のコードに同様のメソッドを実装することができます。
MVC についての基本的な説明は次のとおりですが、時間をかけてグーグルで検索し、次のテキストよりも多くのことを読んでください。
素人の言葉でMVCを定義する
あなたは技術に関心があり、コードに近いことを忘れないでください。あなたにとって MVC は当たり前のことですが、ビジネスに対して「モデル、ビュー、コントローラー」と言うと、何らかの形のトゥレット症候群に苦しんでいるという印象を彼らに与える可能性があります。コードに関連して MVC を定義した後でも、MVC はビジネスにとってあまり意味がありません。なぜこれが答えなのか、そして何よりもそれが何であるかをビジネスに理解してもらうことは、私の経験では予想以上に困難な作業になる可能性があります。仲間の開発者でさえ、これを理解するのが難しい場合があります。
リスナーに MVC とは何か、なぜそれが機能するのかを理解してもらうために、パスで試したことは、リスナーがより関与しているさまざまな業界に MVC を適用することです。不動産や車両と比較して、過去に私のために働いた例. ほとんどの人は、建築業者、大工、配管工、電気技師と取引したり、テレビで不動産番組の洪水を見たりしたことがあります。この経験は、MVC などの分離が機能する理由を説明するのに適したプラットフォームです。ソフトウェアの場合と同じではないので、おそらくそれはうまくいかないと思っていることは承知していますが、ビジネスを開発者になるように訓練したり、MVC を深く理解したりするためにビジネスを訓練しようとしているわけではないことを覚えておいてください。本番環境では必要であり、それが MVC 構造が提供するものです。
これをどのように説明できるかの例を示すために、財産の分離がどのように機能するかを非常に簡単に説明しました. これは、開発されていないシステムの使用に焦点を当てていることに注意してください。これは、まったく異なる角度の説明になる可能性があります。
意見
MVC のビューはプレゼンテーション層です。これは、製品のエンド ユーザーが見て対話するものです。システムは、コマンド ライン出力からレンダリングされた HTML まで、さまざまな種類の複数のビューを持つことができます。ビューは、ほとんどの明確な設計ではビジネス ロジックで構成されていません。インターフェイスは目的に適しており、対話の領域です。したがって、消費者がやり取りする HTML を単純に出力したり、企業がやり取りする SOAP/XML を出力したりすることができます。どちらも、システムの背後でモデルとコントローラーとして知られる同じビジネス ロジックを使用します。
プロパティの世界では、ビューをプロパティの内部または居住者が相互作用するプロパティの外側の層と考えることができます。インテリアは目的に合わせてカスタマイズでき、同じ物件にさまざまなタイプのテナントを持つことができます。たとえば、特定の設計のプロパティには住宅が含まれる場合があります。同じ内部空間をオフィススペースとして簡単に使用できますが、同じプロパティ内で別の目的があります。ただし、プロパティ構造は同じです。したがって、ユーザーが対話する環境は、建物の構造に干渉しません。
コントローラー
コントローラーは魔法が起こる場所であり、ビジネス アプリケーションのロジックを定義します。これは、ユーザーがビューから応答を送信した場所である可能性があり、この応答は、要求の内部動作を処理するために使用され、ユーザーへの応答を処理します。ユーザーが書籍の購入をリクエストした場合の典型的な応答を取得します。コントローラーには、ユーザー ID、支払いの詳細、配送先住所、および商品の選択肢があります。これらの要素は、ビジネス ロジックを通じて処理され、購入が完了します。データはシステムを介してモデル層に渡され、最終的にリクエスト全体がビジネス定義を満たした後、注文が作成され、ユーザーはアイテムを受け取ります。
これを物件に例えると、オンラインで本を注文することは、電気のスイッチをオンにすることに例えることができます。本を注文するのと同じように、テナントはスイッチをオンにフリックします。スイッチ自体は、Web サイトのチェックアウト ボタンをクリックするのと同じように、コントローラーに要求を送信するビュー レイヤー内の要素です。この場合のビジネス ロジックは、電気技師がインストールし、プロパティの設計に組み込まれているものです。スイッチをフリックすると、回路が完成します。電気は、ヒューズ ボックスを含むすべてのワイヤを通り、電球までまっすぐに流れます。ユーザーが本を受け取るように、この場合、テナントは光を受け取ります。電気配線を含む舞台裏のプロセス全体は、テナントには見えません。
モデル
MVC のモデルは最下層にあり、システムのコア ロジックを処理します。ほとんどの場合、これはデータ ソースと対話するレイヤーと見なすことができます。MVC を使用するシステムでは、コントローラーはデータを保存および取得するためにモデルに情報を渡します。上記のコントローラ定義の例に続いて、ここに注文の詳細が保存されます。在庫レベル、本の製品の物理的な場所などの追加データはすべてここに保存されます。それが注文された在庫のある最後の本であった場合、このアイテムの次のリクエストで、そのアイテムが入手可能かどうかが確認され、アイテムが入手できなくなったため注文が拒否される場合があります。
電灯のスイッチをオンにする例を除いて、私たちの構造のこのレベルは電力供給である可能性があります。テナントがスイッチをフリックすると、内部回路は要求に電力を供給するために電力を要求する必要があります。これは、要求を処理するためにデータが必要な場合と同様に、ユーザーがデータベースからデータを要求した場合と同様です。住居が電源に接続されていない場合、プロセスを完了できません。MVC を使用することによるビジネス上の利点
MVC とは何かを説明するメッセージを理解したら、MVC からどのような利点が得られるかを確認する必要があります。ここではあまり詳しく説明しませんが、実際の状況に直接関係する特典をより正確に適用できると確信しています。MVC ベースのシステムの一般的な利点のいくつかをここにリストすると、いくつかの例が表示されます。
スキル レベルが異なれば、システム レベルも異なります。たとえば、設計者は開発に関する知識がほとんどなくてもインターフェイス (View) を操作でき、開発者は設計レベルをほとんど気にせずにビジネス ロジック (Controller) を操作できます。その後、それらは完了時に単純に統合されます。上記の分離プロジェクトの結果として、より簡単かつ迅速に管理できます。設計者は開発者より先にインターフェイスを開始でき、その逆も可能です。この開発プロセスは、逐次的ではなく並行的に行うことができるため、開発時間を短縮できます。同じビジネス ロジックを使用して、複数のビュー タイプを簡単に作成できます。システムを通過するルートをクリアします。システムのさまざまなレベルがどこにあるかが明確にわかります。システムのルートが明確になることで、ロジックの共有と改善が可能になります。これにより、データからユーザーへの許可されたルートが明確にわかり、ルートに沿って明確なセキュリティ チェックを行うことができるため、セキュリティ上の利点が追加されました。各層はそれ自体に責任があります。(ポイント 1 に関連) これは、多数の重複ロジックが存在する可能性のある密結合システムよりもはるかに簡単かつ迅速に維持および管理できるクリーンなファイル構造を持つことができることを意味します。明確な構造を持つことは、開発がより透明になることを意味し、適切に適用された場合、開発時間、メンテナンスの問題、およびリリース サイクルの短縮につながるはずです。(ポイント 1 に関連) これは、多数の重複ロジックが存在する可能性のある密結合システムよりもはるかに簡単かつ迅速に維持および管理できるクリーンなファイル構造を持つことができることを意味します。明確な構造を持つことは、開発がより透明になることを意味し、適切に適用された場合、開発時間、メンテナンスの問題、およびリリース サイクルの短縮につながるはずです。(ポイント 1 に関連) これは、多数の重複ロジックが存在する可能性のある密結合システムよりもはるかに簡単かつ迅速に維持および管理できるクリーンなファイル構造を持つことができることを意味します。明確な構造を持つことは、開発がより透明になることを意味し、適切に適用された場合、開発時間、メンテナンスの問題、およびリリース サイクルの短縮につながるはずです。
PHP で MVC を実装する方法に関する具体的な PHP の例は、http: //phpmaster.com/the-mvc-pattern-and-php-1/にあります。
さらに、コントローラーはある時点で「ビュー」を表示することを理解してください。このビューは、html、xml、json、または何でもかまいません。したがって、コントローラーは AJAX リクエストも処理します。