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 ]パラメータは存在しません。'; | |
| } |