@blog.justoneplanet.info

日々勉強

ZendFramework Response Object(レスポンスオブジェクト)

■レスポンスに関するメソッド

setHeader()
HTTPヘッダ情報の設定
setBody()
コンテンツ内容の設定
appendBody()
コンテンツ内容の追加
sendHeaders()
HTTPヘッダ情報の追加
outputBody()
コンテンツ内容の出力
sendResponse()
HTTPヘッダ情報とコンテンツ内容の出力
clearHeader()
ヘッダ情報の削除
clearBody()
コンテンツ内容の削除
setRedirect()
リダイレクト情報の設定

■サンプルソース

<?php
require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $response = $this->getResponse();
        if($this->_hasParam('hoge')){
            $response->setBody($this->_getParam('hoge'));
            $response->outputBody();
        }
    }
}

ZendFramework Request Object(リクエストオブジェクト)

■リクエスト情報を取得するメソッド

getQuery()
$_GET
getPost()
$_POST
getCookie()
$_COOKIE
getServer()
$_SERVER
getEnv();
$_ENV

■パラメータの取得

以下のようにレスポンスオブジェクトがgetQuery()メソッドをコールするとURIでhogeに対応した値が表示される。

<?php
require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $response = $this->getResponse();
        $response->appendBody($this->getRequest()->getQuery('hoge'));
    }
}

以下のようにカレントオブジェクトが_getParam()メソッドをコールするとURIでhogeに対応した値が表示される。通常は_getParam()メソッドの使用が好ましい。

<?php
require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $response = $this->getResponse();
        $response->setBody($this->_getParam('hoge'));
    }
}

以下のようにするとhogeに対応した値が存在するかチェックする。

<?php
require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $response = $this->getResponse();
        if($this->_hasParam('hoge')){
            $response->setBody($this->_getParam('hoge'));
        }
    }
}

ZendFramework Error Controller(エラーコントローラ)

■エラーコントローラ

<?php
require_once 'Zend/Controller/Action.php';

class ErrorController extends Zend_Controller_Action
{
    public function errorAction(){
        $response = $this->getResponse();
        $response->setBody('Forbidden');
    }
}

デフォルトのアクションにリダイレクトする場合は以下のようになる。

<?php
require_once 'Zend/Controller/Action.php';

class ErrorController extends Zend_Controller_Action
{
    public function errorAction()
    {
        $response = $this->getResponse();
        $response->setBody('Forbidden');
    }
    public function __call($method, $args)
    {
        if(substr($method, -6) === 'Action'){
            $controller = $this->getRequest()->getControllerName();
            $url = '/' . $controller . '/index';
            return $this->redirect($url);
        }
    }
}

ZendFramework Front Controller(フロントコントローラ)

■基本的なフロントコントローラ

require_once 'Zend/Controller/Front.php';

$front = Zend_Controller_Front::getInstance();//フロントコントローラのインスタンス取得
$front->setParam('noViewRender', true);//自動レンダリングモードを無効に
$front->setControllerDirectory('../application/controllers');
$front->dispatch();