プログラマー歴20年の管理人が、これらの悩みを解決できるようにZendFrameworkの基本構造を書きました!
Zend Frameworkの基本的なプロジェクト構造、そしてディレクトリ構成とその役割について理解することができます。
Zend Frameworkの基本的なディレクトリ構成の理解
MVCアーキテクチャの理解
フロントコントローラーの役割
Zend Frameworkは、「MVCアーキテクチャ」という設計思想に基づいて構築されています。MVCとは、Model (モデル) – View (ビュー) – Controller (コントローラー) の略称で、アプリケーションの構成要素をそれぞれに役割分担することで、開発効率と保守性を高める効果があります。
Zend Frameworkでは、このMVCアーキテクチャに沿って、プロジェクトのディレクトリ構成が決められています。
Zend Frameworkのプロジェクトを作成すると、以下のようなディレクトリが自動生成されます。
my-project/
│
├── config/
│ ├── autoload/
│ └── module.config.php
│
├── module/
│ └── Application/
│ ├── config/
│ ├── src/
│ │ ├── Controller/
│ │ └── Module.php
│ ├── view/
│ └── test/
│ └── Controller/
│
├── public/
│ ├── index.php
│
├── data/
│
└── vendor/
config/:
module/:
public/:
data/:
vendor/:
IndexController
は、一般的にアプリケーションのホームページや基本的なページのリクエストを処理します。Zend Framework の初期展開後、models フォルダは自動生成されません。これは、Zend Framework が薄いモデルの考え方を推奨しているためです。
「薄いモデル」とは、Model 層に複雑なロジックを持たせず、データベースとのやり取りなど最小限の機能のみに絞る設計思想です。
Zend Framework では、データベースとのやり取りは主に Table Data Gateway パターンを用いて行い、そのためのクラスは TableGateway や ResultSet といった Zend Framework が提供するコンポーネントを利用します。
そのため、初期状態では専用の models フォルダは用意されていません。
フロントコントローラーは、すべてのリクエストを一元的に処理するエントリーポイントです。public/index.php
に配置され、次の役割を果たします。
フロントコントローラーは、クライアント(ユーザーのブラウザなど)からのリクエストを受け取ります。このリクエストは、Webサーバーによってpublic/index.php
に渡されます。
リクエストを受け取ったフロントコントローラーは、次にリクエストのURLを解析し、どのコントローラーとアクションが対応するかを決定します。これをルーティングと呼びます。
ルーティング設定は通常、module.config.php
やroutes.config.php
に記述されます。
ルーティングによって決定されたコントローラーとアクションが呼び出されます。コントローラーは、リクエストを処理し、必要なデータをモデルから取得し、ビューに渡します。
最終的に、コントローラーが生成したレスポンス(通常はHTML、JSONなど)がフロントコントローラーに戻され、クライアントに送信されます。
MVCアーキテクチャ:
Zend Frameworkのディレクトリ構成:
フロントコントローラーの役割: