CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

今回は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
このエントリーをはてなブックマークに追加

Comment

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Monthly Archives

Search