首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Zend Framework 動作控制器基類 Zend_Controller_Action 核心功能詳解

     編輯:PHP 綜合知識

類別架構

所有動作控制器必須繼承 Zend_Controller_Action,實作 Zend_Controller_Action_Interface。建構子注入請求、回應物件與呼叫參數,初始化助理代理器並呼叫 init()。

核心屬性與方法

視圖相關

  • initView():初始化視圖物件,依模組/控制器目錄結構設定基礎路徑。
  • render($action, $name, $noController):渲染視圖腳本至回應物件指定片段。
  • renderScript($script, $name):渲染指定腳本路徑。
  • getViewScript():取得視圖腳本相對路徑(自動轉換分隔符為 -)。

請求/回應存取

  • getRequest() / getResponse():取得請求/回應物件。
  • _getParam($key, $default) / _setParam() / _hasParam() / _getAllParams():請求參數快捷操作。

助理代理器

_helper 屬性提供助理存取,常用操作:

// 單一動作停用自動渲染
$this->_helper->viewRenderer->setNoRender();

// 全域停用 ViewRenderer
Zend_Controller_Front::getInstance()->setParam('noViewRenderer', true);

流程控制

  • _forward($action, $controller, $module, $params):轉發至另一個動作。
  • _redirect($url, $options):重導向,支援 exit、prependBase、code 選項。

鉤子方法

  • preDispatch():動作執行前(可修改請求、跳過動作)。
  • postDispatch():動作執行後。

自訂基類擴充範例

處理不存在的動作

class MyController extends Zend_Controller_Action
{
    public function __call($method, $args)
    {
        if ('Action' == substr($method, -6)) {
            return $this->render('error'); // 或 _forward('index')
        }
        throw new Exception('Invalid method "' . $method . '"', 500);
    }
}

自訂視圖初始化

abstract class My_Base_Controller extends Zend_Controller_Action
{
    public function initView()
    {
        if (null === $this->view) {
            if (Zend_Registry::isRegistered('view')) {
                $this->view = Zend_Registry::get('view');
            } else {
                $this->view = new Zend_View();
                $this->view->setBasePath(dirname(__FILE__) . '/../views');
            }
        }
        return $this->view;
    }
}

總結

Zend_Controller_Action 提供視圖渲染、助理機制、請求回應存取、流程控制等核心功能,透過覆寫鉤子方法與建構子流程,能靈活擴充符合專案需求的基礎控制器類別。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved