hitoshop14 @ ウィキ

フロントコントローラ

最終更新:

hitoshop

- view
管理者のみ編集可

フロントコントローラ

 フロントコントローラとは、公開ディレクトリ上に置く1つだけのファイル[ index.php ]のことを言います。

  1. フロントコントローラのインスタンスを取得する
  2. コントローラのディレクトリを指定する
  3. ディスパッチする( 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 ]パラメータは存在しません。';  
}  

 

 



 

記事メニュー
目安箱バナー