hitoshop14 @ ウィキ
フロントコントローラ
最終更新:
hitoshop
フロントコントローラ
フロントコントローラとは、公開ディレクトリ上に置く1つだけのファイル[ index.php ]のことを言います。
- フロントコントローラのインスタンスを取得する
- コントローラのディレクトリを指定する
- ディスパッチする( URL解析によって得られたコントローラに以降の処理を委託する )
<?php | ▼▼▼説明▼▼▼ |
require_once 'Zend/Controller/Front.php'; | Zend_Controllerのコンポーネントをロード |
$front = Zend_Controller_Front::getInstance(); | フロントコントローラのインスタンスを取得 |
$front->setParam('noViewRenderer', true); | 自動レンダリングモードを無効 |
$front->setControllerDirectory('../application/controllers'); | コントローラディレクトリのパス指定 |
$front->dispatch(); | コントローラのディスパッチを実行 |
dispatch()メソッドは、前述のURL解析により、デフォルトコントローラ、または指定されたコントローラに処理を委託します。
上記の処理を一括して行う rum()メソッドもあります。
<?php |
require_once 'Zend/Controller/Front.php'; |
Zend_Controller_Front::getInstans()->setParam('noViewRenderer', true); |
Zend_Controler_Front::run('../application/controllers'); |
run()メソッドを使用することにより、インスタンスの取得・コントローラディレクトリの指定・ディスパッチを一気に行うことができるので、こちらの方が単純です。
ここで重要になってくるのは、自動レンダリングを無効にするか有効にするかです。
$front->setParam('noViewRenderer',
true);
この部分ですが、ここではすべて無効にしています。デフォルトでは有効になっているので、有効として使用する場合には、$front->setParam('noViewRenderer',
true);、の記述は必要ありません。
ZendFrameworkでは、自動レンダリングモードを有効にすることを推奨しています。
自動レンダリングモードを有効にすると、必ずビュースクリプトが必要になり
(application/views/scripts/コントローラ名/アクション名.phtml)このファイルを読み込み画面出力するので、MVCモデルを採用して作成しなければなりません。
レスポンスオブジェクト
レスポンスオブジェクトとは、データの出力を担当します。
ここで重要なのは、自動レンダリングモードを有効にした場合には、レスポンスオブジェクトは使用できず、必ずビュースクリプトが必要になる点です。
MVCモデルで開発を行う際には、使用することはないと思いますが、一応メソッドの種類を説明します。
メソッド | 概要 |
setHeader() | HTTPヘッダ情報を設定 |
setBody() | コンテンツ内容を設定 |
appendBody() | コンテンツ内容を追加 |
seneHeaders() | HTTPヘッダ情報を出力 |
outputBody() | コンテンツ内容を出力 |
sendResponse() | HTTPヘッダ情報とコンテンツ内容を出力 |
clearHeaders() | ヘッダ情報を消去 |
clearBody() | コンテンツ内容を消去 |
setRedirect() | リダイレクト情報を設定 |
リクエストオブジェクト
リクエストオブジェクトとは、ブラウザからアクセスされた情報( GET POST Cookie
)や、コントローラ間でやり取りする情報を操作する役割を担っています。
ZendFrameworkでは、これらのスーパーグローバル変数ではなく専用のメソッドを使用するルールになっています。
対象データ | スーパーグローバル変数 | 対応メソッド |
クエリストリング | $_GET | getQuery() |
POSTデータ | $_POST | getPost() |
Cookieデータ | $_COOKIE | getCookie() |
サーバー変数 | $_SETVER | getServer() |
環境変数 | $_ENV | getEnv() |
sample
<?php | ▼▼▼説明▼▼▼ |
$this->_getParam('food'); | [ food ]の値を取得する |
$this->_getAllParams(); | すべてのパラメータを取得する |
if ($this->_hasParam('food')){ |
[ food ]パラメータが存在するかチェック |
echo '[ food ]の値は' . $this->_getParam('food') . 'です。'; | [ food ]パラメータ出力 |
} else { | |
echo '[ food ]パラメータは存在しません。'; | |
} |