PHP MVC のディレクトリ構成を考える

さて、.htaccessでwebサイトへのアクセスを全てキャッチして、
Transfer.phpで、Controller.phpに処理を渡すところまでやってきました。

いよいよPHP-MVCについて本題に突入か!というところなのですが、その前に・・・
webサーバのディレクトリをどのように構築するか確認しておきましょう。

hoge [D]
 ∟ server_dependence.php [F]
 ∟ public_html [D]
 |    ∟ .htaccess [F]
 |    ∟ Transfer.php [F]
 ∟ program [D]
      ∟ Controller.php [F]
      ∟ Utility.php [F]
      ∟ class [D]
      ∟ cache [D]
      |    ∟ session [D]
      ∟ MV_… [D]
      ∟ M_common [D]
      ∟ V_common [D][D] = directory, [F] = file
/hoge/
このディレクトリを、全てのルートディレクトリと考えます。つまり、webサイトに必要なファイルは全て /hoge/ に収まることになります。
/hoge/server_dependence.php
名前の通り、【サーバに依存する】設定ファイルです。
/hoge/ 内のファイルの中で、開発環境と、本番環境との差異は、【server_dependence.php】のみとします。
主に、定数宣言です。
/hoge/public_html/
ここが、ドキュメントルートです。
ドキュメントルートとは、ブラウザでアクセスした時に、表示される最上階のディレクトリのことです。
例えば・・・ http://example.com/index.html とアクセスすると、
/hoge/public_html/index.html がブラウザに表示されることになります。
/hoge/public_html/.htaccess
全てのアクセスを.htaccess でキャッチするで、作成した.htaccessです。
/hoge/public_html/Transfer.php
Transfer.php から安全な場所に処理を渡すで作成した、Transfer.phpです。
その他の /hoge/public_html/
画像、css、javascriptファイルなどがあれば、 /hoge/public_html/ 内に適当なディレクトリを作成して設置してください。
/hoge/program/
PHPファイルは原則として全てこの中に格納します。前述したTransfer.phpや、site_dependenceディレクトリは、唯一の例外となります。
開発環境と、本番環境との差異は【site_dependence】で吸収させるため、programディレクトリごと更新(アップロード)可能な構造にします。
/hoge/program/Controller.php
Controllerです。 全てのアクセスは、ここに流れてくるので、URIに応じた振分け処理が中心となります。
/hoge/program/Utility.php
汎用的なfunctionがあれば、ここに格納しておきます。
functionが増えてきたときは、必要に応じて名称変更やファイル分割をするとよいかと思います。
/hoge/program/class/
汎用的なclassファイル(ユーザー情報classなど)を作成した場合は、全てこの中に格納しておきます。
/hoge/program/cache/
キャッシュファイルを格納します。この中には、ログファイルやセッション情報を含みます。
/hoge/program/cache/session/
セッションを利用するなら、ここが、 【session.save_path】になります。
/hoge/program/MV_.../
MV_... と書きましたが、 MV_ で始まるディレクトリという意味で捉えてください。
例えば、 MV_index の場合、 http://example.com/index.html の時に処理するディレクトリという使い方になります。
MV_ には、Modelであるページ単位のプログラム本体と、Viewであるページ単位の画面出力を担当するPHPファイルが格納されます。
/hoge/program/M_common/
/hoge/program/V_common/
M_ はModel、V_はViewを意味します。
様々なページから共通して呼び出されるファイルを作成するならこの中に設置します。
V_commonには、 header.php、footer.php、sidebar.php などが置かれるかと思います。
一方、M_commonは・・・私自身では必要になったことがありません・・・が、webサイトによっては必要になることがあるかと思います。

次へ :
前へ : Transfer.php から安全な場所に処理を渡す