(Yaf >=1.0.0)
Yaf_Controller_Abstract 是 Yaf 系统的核心。MVC 代表模型-视图-控制器,是一种旨在将应用程序逻辑与显示逻辑分离的设计模式。
每个自定义控制器都应该继承 Yaf_Controller_Abstract。
您会发现您无法为自定义控制器定义 __construct 函数,因此,Yaf_Controller_Abstract 提供了一个魔术方法:Yaf_Controller_Abstract::init()。
如果您在自定义控制器中定义了 init() 方法,它将在控制器被实例化后被调用。
Action 可能有参数,当请求到来时,如果请求参数(参见 Yaf_Request_Abstract::getParam())中存在同名变量,在路由后,Yaf 会将它们传递给 Action 方法(参见 Yaf_Action_Abstract::execute())。
注意:
这些参数是直接获取的,没有经过过滤,在使用它们之前应该仔细处理。
您还可以使用此属性和 Yaf_Action_Abstract 在单独的 PHP 脚本中定义 Action 方法。
示例 #1 在单独的文件中定义 Action
<?php
class IndexController extends Yaf_Controller_Abstract {
protected $actions = array(
/** 现在 dummyAction 在一个单独的文件中定义 */
"dummy" => "actions/Dummy_action.php",
);
/* Action 方法可能会有参数 */
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 {
/* 一个 Action 类应该定义此方法作为入口点 */
public function execute() {
}
}
?>
模块名称
控制器名称
当前请求对象
当前响应对象
视图引擎对象