Zend FrameworkでHello World!
今回はZend Frameworkのベースとなる仕組みを理解してみたいと思います。
まずは定番の「Hello World!」を表示させてみます。
前回、「Zend Frameworkをインストール」でも記述したように、「.htaccess」にmod_rewriteを記述して、全てのアクセスをindex.phpにリダイレクトするようにします。
その理由として、Zend FrameworkはMVCを採用しており、Cの部分に該当するコントローラというしくみで全てのリクエストが処理されます。フロントコントローラがindex.phpにあたります。
以下のようにして、全てのリクエストはまずフロントコントローラであるindex.phpで受け付けられ、リクエストに応じてアクションコントローラに振り分けられます。
require_once 'Zend/Controller/Front.php'; Zend_Controller_Front::run("../application/controllers");
公開フォルダがhtdocsなどの場合、フロントコントローラ以外のファイルは同階層の例えば「application」フォルダにまとめます。つまり、フロントコントローラ以外のファイルを非公開フォルダにまとめることで、セキュリティの強度を高めるわけです。
さて、ここでは確認のために「Hello World!」を表示させるパスを「http://xxxxx/test/hello」とします。するとZend Frameworkではtestはコントローラ名、helloはアクション名として解釈されます。
したがって、このパスにアクセスがあった場合に、フロントコントローラによりアクションコントローラ「/application/controllers/TestController.php」に処理が割り当てられます。さらに、「TestController.php」クラスの中のアクションメソッド「helloAction()」がコールされ、その結果がビュー「/application/views/scripts/Test/hello.phtml」に投げられます。これら一連の流れこそがZend Frameworkの機能そのものであり、このルールについて特に処理を記述したり設定する必要はありません。
それでは、TestController.phpの中身です。
require_once 'Zend/Controller/Action.php'; class TestController extends Zend_Controller_Action{ public function indexAction(){ } public function helloAction(){ $this->view->assign('name', 'Hello World!'); } }
ビューは処理結果を表示するテンプレートのようなものです。拡張子は「.phtml」とします。
<html> <head> <title>Hello World!</title> </head> <body> <?php echo $this->name;?> </body> </html>
ブラウザより「/test/hello」にアクセスしてみて、以下のように表示されれば成功です。
Hello World!
以下に今回作成したファイルの構成をまとめます。htdocsがドキュメントルートでWebに公開するフォルダです。
/htdocs/index.php /htdocs/.htaccess /application/controllers/TestController.php /application/views/scripts/Test/hello.phtml
コメントする