作者:卟105932097 | 来源:互联网 | 2015-11-29 00:03
Yaf_Controller_Abstract是Yaf的MVC体系的核心部分。MVC是指Model-View-Controller,是一个用于分离应用逻辑和表现逻辑的设计模式。每个用户自定义controller都应当继承Yaf_Controller_Abstract。
Yaf_Controller_Abstract 是Yaf的MVC体系的核心部分。 MVC是指Model-View-Controller, 是一个用于分离应用逻辑和表现逻辑的设计模式。每个用户自定义controller都应当继承Yaf_Controller_Abstract。
你会发现在你自己的controller中无法定义__construct方法。因此,Yaf_Controller_Abstract 提供了一个魔术方法Yaf_Controller_Abstract::init()。如果在你自己的controller里面已经定义了一个init()方法,当你的controller被实例化的时候,它将被调用。
Yaf_Action_Abstract是MVC中C的动作, 一般而言动作都是定义在Yaf_Controller_Abstract的派生类中的, 但是有的时候, 为了使得代码清晰, 分离一些大的控制器, 则可以采用单独定义Yaf_Action_Abstract来实现。Yaf_Action_Abstract体系具有可扩展性, 可以通过继承已有的类, 来实现这个抽象类, 从而添加应用自己的应用逻辑.
此外,Yaf_Action_Abstract是继承自Yaf_Controller_Abstract的,这也是将这两个内建类放到一起学习的原因之一。
[php] view plaincopy
abstract Yaf_Action_Abstract extends Yaf_Action_Controller {
public abstract void execute ( void );
}
Yaf_Controller_Abstract类摘要
[php] view plaincopy
abstract Yaf_Controller_Abstract {
/* 属性 */
public $actions ;
protected $_module ;
protected $_name ;
protected $_request ;
protected $_response ;
protected $_invoke_args ;
protected $_view ;
/* 方法 */
final private void __clone ( void )
final private __construct ( void )
protected bool display ( string $tpl [, array $parameters ] )
public void forward ( string $module [, string $controller [, string $action [, array $paramters ]]] )
public void getInvokeArg ( string $name )
public void getInvokeArgs ( void )
public string getModuleName ( void )
public Yaf_Request_Abstract getRequest ( void )
public Yaf_Response_Abstract getResponse ( void )
public Yaf_View_Interface getView ( void )
public void getViewpath ( void )
public void init ( void )
public void initView ([ array $options ] )
public void redirect ( string $url )
protected string render ( string $tpl [, array $parameters ] )
public void setViewpath ( string $view_directory )
}
Yaf_Controller_Abstract成员方法列表
Yaf_Controller_Abstract::__clone — Yaf_Controller_Abstract 不能被克隆
Yaf_Controller_Abstract::__construct — Yaf_Controller_Abstract constructor
Yaf_Controller_Abstract::display — The display purpose
Yaf_Controller_Abstract::forward — The forward purpose
Yaf_Controller_Abstract::getInvokeArg — The getInvokeArg purpose
Yaf_Controller_Abstract::getInvokeArgs — The getInvokeArgs purpose
Yaf_Controller_Abstract::getModuleName — 获取当前控制器所属的模块名
Yaf_Controller_Abstract::getRequest — The getRequest purpose
Yaf_Controller_Abstract::getResponse — The getResponse purpose
Yaf_Controller_Abstract::getView — 获取当前的视图引擎
Yaf_Controller_Abstract::getViewpath — The getViewpath purpose
Yaf_Controller_Abstract::init — 控制器初始化
Yaf_Controller_Abstract::initView — The initView purpose
Yaf_Controller_Abstract::redirect — The redirect purpose
Yaf_Controller_Abstract::render — 渲染视图模板
Yaf_Controller_Abstract::setViewpath — The setViewpath purpose
对于Controller来说, 真正的执行体是在Controller中定义的一个一个的动作Action, 当然这些动作也可以定义在Controller外(放在成员$actions中指定)
[php] view plaincopy
"actions/Dummy_action.php",
);
/* action method may have arguments */
public indexAction($name, $id) {
assert($name == $this->getRequest()->getParam("name"));
assert($id == $this->_request->getParam("id"));
}
}
?>
文件actions/Dummy_action.php为一个action类
[php] view plaincopy
与一般的框架不同, 在Yaf中, 可以定义动作的参数, 这些参数的值来自对Request的路由结果中的同名参数值. 比如对于如下的控制器