(Yaf >=1.0.0)
Yaf_Controller_Abstract 類別是 Yaf 系統的核心。MVC 代表模型-視圖-控制器,是一種旨在將應用程式邏輯與顯示邏輯分離的設計模式。
每個自訂控制器都應繼承 Yaf_Controller_Abstract。
您會發現您無法為自訂控制器定義 __construct 函式,因此,Yaf_Controller_Abstract 提供了一個魔術方法:Yaf_Controller_Abstract::init()。
如果您在自訂控制器中定義了 init() 方法,只要控制器被實例化,它就會被呼叫。
動作可以有參數,當請求到來時,如果路由後在請求參數(參見 Yaf_Request_Abstract::getParam())中有相同名稱的變數,Yaf 會將它們傳遞給動作方法(參見 Yaf_Action_Abstract::execute())。
注意:
這些參數是直接獲取的,沒有經過過濾,使用前應仔細處理。
您也可以使用此屬性和 Yaf_Action_Abstract 在單獨的 PHP 腳本中定義動作方法。
範例 #1 在單獨檔案中定義動作
<?php
class IndexController extends Yaf_Controller_Abstract {
protected $actions = array(
/** 現在 dummyAction 定義在一個單獨的檔案中 */
"dummy" => "actions/Dummy_action.php",
);
/* 動作方法可以有參數 */
public function indexAction($name, $id) {
/* $name 和 $id 是未經處理的原始資料 */
assert($name == $this->getRequest()->getParam("name"));
assert($id == $this->_request->getParam("id"));
}
}
?>
範例 #2 Dummy_action.php
<?php
class DummyAction extends Yaf_Action_Abstract {
/* 一個動作類別應定義此方法作為入口點 */
public function execute() {
}
}
?>
模組名稱
控制器名稱
目前的請求物件
目前的回應物件
視圖引擎物件