Fuelphp-architecture-overview

提供:Dev Guides
移動先:案内検索

FuelPHP-アーキテクチャの概要

FuelPHPは、バトルテスト済みの Model-View-Controller アーキテクチャと* HMVC(Hierarchical MVC)*サポートに基づいています。 MVCは柔軟で階層化されたアプリケーション開発を提供しますが、HMVCはさらに一歩進んで、Webアプリケーションのウィジェット化を可能にします。

FuelPHPの強みは、アプリケーションを開発する特定の方法を強制しないことです。 シンプルで使いやすい標準構造を提供するだけです。 開発者は、FuelPHPが提供する定義済みの機能セットを自由に使用したり、必要なときにいつでも変更したりできます。 コア機能を含むFuelPHPが提供するすべての機能は、アプリケーションの要件に応じて変更できます。

モデル

モデルは、アプリケーションのビジネスエンティティです。 コントローラーとビューは、モデルの形式でデータを交換します。 モデルにより、ビジネスデータを統一的に表現できます。 これにより、データベースレイヤーがWebアプリケーションレイヤーと標準的な方法で対話できるようになり、データベースエンティティを選択、保存、編集、および削除するオプションが提供されます。

コントローラ

典型的なMVCアプリケーションは、コントローラーから開始します。 ユーザーがFuelPHP Webアプリケーションにリクエストを送信すると、アプリケーションはリクエストに関するすべての情報を収集し、それをコントローラーに送信します。 コントローラーは、要求されたページの必要なビジネスロジックを実行し、モデルの形式で処理されたデータとともに関連するビューを呼び出します。

View

ビューは、MVCアプリケーションのプレゼンテーションレイヤーです。 ビューは、モデルをユーザーに表示する方法を決定します。 高度なレイアウトへのシンプルなデータレンダリングをサポートしているため、Webサイトはすべてのページにわたってデザインを正規化できます。 Viewはテーマのサポートも提供します。これにより、アプリケーション全体の設計をすばやく変更できます。

プレゼンター

Presenterは、FuelPHPが提供する特別な機能です。 ControllerとViewの間の接着剤です。 コントローラーは、データベースからモデルを取得したり、ビューのデータを生成したりなど、低レベルの責任を共有できます。 コントローラは、Viewの代わりにPresenterを呼び出します。Viewは、Viewを呼び出します。 Presenterを使用すると、ビジネスロジックとプレゼンテーションレイヤーを完全に分離できます。

階層MVC

FuelPHPは、クライアント(ブラウザー)からの要求と同様に、1つのコントローラーを別のコントローラーから呼び出すオプションを提供します。 いずれかのコントローラーが別のコントローラーを呼び出すと、呼び出されたコントローラーは、クライアント(ブラウザー)にレンダリングするのではなく、呼び出し元のコントローラーに応答を返します。 これにより、Webアプリケーションの*ウィジェット化*が可能になります。 たとえば、コメントセクションは、スタンドアロンページとして表示することも、メイン(ブログ)ページのサブセクションとして表示することもできます。

モジュール

FuelPHPの顕著な特徴の1つは、Webアプリケーションのセクションをモジュールに変換し、異なるアプリケーション間で共有できることです。 たとえば、アプリケーション用に作成されたブログモジュールは、モジュールコードをソースアプリケーションからターゲットアプリケーションにコピーするだけで、別のアプリケーションで再利用できます。

新しいモジュールの作成は、メインアプリケーションの開発と同じくらい簡単です。 構造はメインモジュールに似ていますが、モジュールが別のフォルダーをコーディングする必要があるという唯一の例外があります。

パッケージ

FuelPHPには、パッケージと呼ばれる単一のユニットにコードを編成するオプションがあります。 パッケージには、Webアプリケーションに必要な1つ以上の機能を含めることができます。 たとえば、ORM、電子メールなどのデータベースコンポーネントをパッケージに整理し、必要なときにいつでも使用できます。

パッケージには、Webページまたは部分的なWebページが含まれないという意味で、モジュールとは異なります。 パッケージは、FuelPHPおよび他のPHPフレームワークで使用できます。

ワークフロー

FuelPHPのワークフローはシンプルで理解しやすいものです。 次の図に示されています。

ワークフロー

  • ユーザーがアプリケーションにリクエストを送信します。
  • コントローラーはリクエストを受信し、モデルと対話することで情報を収集します。モデルはデータベースと対話します。
  • コントローラーは、他のコントローラーにサブリクエストを送信して、他のコントローラーと対話することで情報を収集します。
  • コントローラーは、取得したモデルをビューに送信します。ビューは、プレゼンテーションを生成し、応答としてクライアントに送信します。
  • 場合によっては、コントローラーがコントロールをプレゼンターに渡すことがあります。 その場合、プレゼンターはモデルから情報を収集し、それをクライアントに送信します。 ここでは、プレゼンターは、データベースからモデルを取得する以外、ビジネスロジックを実行しません。