処理の流れを考える

MVCを実現するために、まずは、アクセスを全て、Controllerに持っていく必要があります。

http://example.com/
http://example.com/hoge.html
http://example.com/hoge/fuga.html

これらのどのURIでアクセスされた時でも、プログラム処理は必ず Controller から始まるようにします。

では、詳しく書いていく前に、処理の流れを先に書いておこうと思います。

webサイトにアクセスが来る
  ↓
全てのアクセスを .htaccess により、 PHPファイル【Transfer】に処理を渡す
  ↓
PHPファイル【Transfer】 から、 PHPファイル【Controller】 に処理を渡す
  ↓
PHPファイル【Controller】 で、URIに応じて、PHPファイル【Model】を呼び出す
  ↓
PHPファイル【Controller】 で、URIに応じて、PHPファイル【View】を呼び出す

このような流れとなります。

さて、Controller の前に、 Transfer というのが入ってますが、Transfer はMVCからは外れたものになります。下記が、webサーバのディレクトリ構成になります。

/hoge/public_html/.htaccess  ← apacheのconfに記述するなら不要
/hoge/public_html/Transfer.php
/hoge/program/Controller.php

/hoge/public_html/ がドキュメントルートで、http://example.com/ にアクセスがあった場合、通常はドキュメントルートより下のファイルが処理されることになります。

それでも構わないのですが、セキュリティ的に余計なことは考えたくないので、ドキュメントルートとは全く異なる場所に Controller.php を設置することにします。

.htaccess から、ドキュメントルートの外のファイルを呼び出すことができるなら、Transfer.phpは不要ですが、それができないため、一旦、Transfer.phpに渡し、そこからController.phpを呼び出すという、2段階を経ています。

※レンタルサーバなどでドキュメントルート以外の場所を利用できない場合は・・・
/hoge/public_html/program/Controller.php
などとして、
/hoge/public_html/program/ 内を、Basic認証などで制限しておく方法もあります。
今後の説明で、/hoge/program/ と書いてあれば、 /hoge/public_html/program/
と読み替えて頂くようお願いします。

次へ : 全てのアクセスを.htaccess でキャッチする