「フロントコントローラ」の編集履歴(バックアップ)一覧はこちら

フロントコントローラ」(2008/10/26 (日) 08:40:22) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

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

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー