Controller.class.php
3.57 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace Think;
/**
* ThinkPHP API模式控制器基类
*/
abstract class Controller
{
/**
* 架构函数
*
* @access public
*/
public function __construct()
{
// 控制器初始化
if (method_exists($this, '_initialize')) {
$this->_initialize();
}
}
/**
* 魔术方法 有不存在的操作的时候执行
*
* @access public
* @param string $method
* 方法名
* @param array $args
* 参数
* @return mixed
*/
public function __call($method, $args)
{
if (0 === strcasecmp($method, ACTION_NAME . C('ACTION_SUFFIX'))) {
if (method_exists($this, '_empty')) {
// 如果定义了_empty操作 则调用
$this->_empty($method, $args);
} else {
E(L('_ERROR_ACTION_') . ':' . ACTION_NAME);
}
} else {
E(__CLASS__ . ':' . $method . L('_METHOD_NOT_EXIST_'));
return;
}
}
/**
* Ajax方式返回数据到客户端
*
* @access protected
* @param mixed $data
* 要返回的数据
* @param String $type
* AJAX返回数据格式
* @return void
*/
protected function ajaxReturn($data, $type = '')
{
if (empty($type)) {
$type = C('DEFAULT_AJAX_RETURN');
}
switch (strtoupper($type)) {
case 'JSON':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
exit(json_encode($data));
case 'XML':
// 返回xml格式数据
header('Content-Type:text/xml; charset=utf-8');
exit(xml_encode($data));
case 'JSONP':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
$handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
exit($handler . '(' . json_encode($data) . ');');
case 'EVAL':
// 返回可执行的js脚本
header('Content-Type:text/html; charset=utf-8');
exit($data);
}
}
/**
* Action跳转(URL重定向) 支持指定模块和延时跳转
*
* @access protected
* @param string $url
* 跳转的URL表达式
* @param array $params
* 其它URL参数
* @param integer $delay
* 延时跳转的时间 单位为秒
* @param string $msg
* 跳转提示信息
* @return void
*/
protected function redirect($url, $params = array(), $delay = 0, $msg = '')
{
$url = U($url, $params);
redirect($url, $delay, $msg);
}
}