モデル、ビュー、コントローラ (MVC)

MVC とは?

MVC は、アプリケーションでの役割に基づいてコードを分離するアプローチです。 アプリケーションフローでは、まずコントローラが呼び出されます。コントローラは、モデルを使用してデータを取得するメソッドを実行します。 それから、コントローラはどのビューを呼び出すか決定します。 ビューには訪問者が閲覧する出力が含まれています。

コントローラ

コントローラクラスは APPPATH/classes/controller に配置します。

FuelPHP のルーティングは、呼び出すコントローラとメソッドをリクエスト URL に基づいて、決定します。 ここからアプリケーションが動き出します。コントローラは、何を行うか、ユーザの入力をどう扱うか、 どのデータが処理されるか、どのビューをユーザに見せるか、を決めます。しかし、コントローラは、自身では何も行いません。 モデルとクラスを呼び出します。

詳細については コントローラ を参照ください。

モデル

モデルクラスは APPPATH/classes/model に配置します。

データを取得/処理/削除する必要がある時は必ず、モデルで行うべきです。 モデルは、ある種のデータの表現であり、データを変更するメソッドがあります。例: コントローラに SQL クエリを置くべきではありません。SQL クエリはモデルに置き、コントローラはクエリを実行するときにモデルを呼び出します。 こうすると、データベースが変更になった場合、コントローラを変更する必要はなく、 データベースを扱うモデルのみ変更すればよいです。

詳細については モデル を参照ください。

ビュー

ビューは APPPATH/views に配置します。

ビューには HTML が含まれます。コントローラや、出力を意図しない他のクラスには HTML が含まれるべきではありません。 ロジックからレイアウトを分離することで、 レイアウトを変更するときに、ビューを変更しさえすれば良く、コントローラを気にする必要はなくなります。
したがって、ビューでは PHP は echoforeach を使う程度にすべきです。

詳細については ビュー を参照ください。

プレゼンタ

Presenter クラスは APPPATH/classes/presenter に配置します。

アプリケーションが複雑になると、アプリケーションロジックにあまり関係がなく、 ビューに密接に関係するロジックをコントローラに含めるかどうか判断が難しくなるでしょう。 この場合、プレゼンタが役立ちます。 プレゼンタはコントローラとビューの仲立ちをします。

詳細については プレゼンタ を参照ください。