処理の流れを考える
篠原 隆司
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/ と読み替えて頂くようお願いします。