Abstract.class.php
2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
/**
* 自定义一个基类 -- 应用中的所有控制器应继承此类
* (以备业务有所修改而不便故延伸此类)
*
* @name Controller_abstract
* @version 0.1
* @author xiaoma 2012-6-26
*
*/
class Controller_abstract extends Framework_YController {
/**
* 初始化基类
*
*/
function __construct() {
parent::__construct ();
}
/**
* 将继承类中的execute方法覆盖,方便以后对此应用单独进行配置或修改,避免直接操作基础类
*
* @param string $action_name 要执行的action名称
* @param array $args 预留参数
* @author xiaoma 2012-6-26
*/
public function execute($action_name, array $args = array()) {
$action_method = $this->formatActionName ( $action_name );
$this->_before_execute ();
$this->init ();
$response = call_user_func_array ( array ($this, $action_method ), $args );
$this->_after_execute ( $response );
if (is_null ( $response ) && is_array ( $this->_view )) {
// 如果动作没有返回值,并且 $this->view 不为 null,
// 则假定动作要通过 $this->view 输出数据
$config = $this->_getViewDir ();
$response = new $this->_view_class ( $config );
$response->setViewname ( $this->_getViewName () )->assign ( $this->_view );
$this->_before_render ( $response );
}
return $response;
}
/**
* 执行Action前的操作
* 在此设置此方法为最终方法,不允许action中进行继承
* 此处可放置如日志系统之类的代码
*
*/
final protected function _before_execute() {
}
/**
* 执行Action后的操作
* 在此设置此方法为最终方法,不允许action中进行继承
* 此处可放置如日志系统之类的代码
*
*/
final protected function _after_execute(&$response) {
}
/**
* 显示一个提示页面,然后重定向浏览器到新地址
*
* @param string $caption 标题
* @param string $message 提示信息
* @param string $url 跳转链接
* @param int $delay 停留时间时间
* @param string $script JS脚本
* @param string $viewname 使用的视图
*
* @return QView_Render_PHP
*/
protected function _redirectMessage($caption, $message, $url, $delay = 5, $script = '', $viewname = 'redirect_message') {
$config = $this->_getViewDir ();
$config ['view_script_dir'] = $config ['view_dir'];
$response = new $this->_view_class ( $config );
$response->setViewname ( $viewname );
$response->assign ( array ('message_caption' => $caption, 'message_body' => $message, 'redirect_url' => $url, 'redirect_delay' => $delay, 'hidden_script' => $script ) );
return $response;
}
}
?>