改进response类的returnData方法

This commit is contained in:
thinkphp
2015-12-22 15:41:16 +08:00
parent f726fbf6d2
commit 9ed8ca5e17
4 changed files with 22 additions and 20 deletions

View File

@@ -39,6 +39,7 @@ defined('APP_HOOK') or define('APP_HOOK', false); // 是否开启HOOK
defined('ENV_PREFIX') or define('ENV_PREFIX', 'T_'); // 环境变量的配置前缀 defined('ENV_PREFIX') or define('ENV_PREFIX', 'T_'); // 环境变量的配置前缀
defined('IS_API') or define('IS_API', false); // 是否API接口 defined('IS_API') or define('IS_API', false); // 是否API接口
defined('IN_UNIT_TEST') or define('IN_UNIT_TEST', false); // 是否为单元测试 defined('IN_UNIT_TEST') or define('IN_UNIT_TEST', false); // 是否为单元测试
defined('APP_AUTO_BUILD') or define('APP_AUTO_BUILD', false); // 是否自动生成应用模块
// 应用模式 默认为普通模式 // 应用模式 默认为普通模式
defined('APP_MODE') or define('APP_MODE', function_exists('saeAutoLoader') ? 'sae' : 'common'); defined('APP_MODE') or define('APP_MODE', function_exists('saeAutoLoader') ? 'sae' : 'common');
@@ -311,11 +312,11 @@ function S($name, $value = '', $options = null)
* @param string $level 日志级别 * @param string $level 日志级别
* @return void|array * @return void|array
*/ */
function trace($log='[think]', $level = 'log') function trace($log = '[think]', $level = 'log')
{ {
if('[think]'==$log){ if ('[think]' == $log) {
return \think\Log::getLog(); return \think\Log::getLog();
}else{ } else {
\think\Log::record($log,$level); \think\Log::record($log, $level);
} }
} }

View File

@@ -13,8 +13,8 @@ return [
'default_return_type' => 'html', 'default_return_type' => 'html',
// 默认语言 // 默认语言
'default_lang' => 'zh-cn', 'default_lang' => 'zh-cn',
// response输出终止执行 // response输出方式 0 echo 1 return 2 exit
'response_exit' => true, 'response_type' => 0,
// 默认AJAX 数据返回格式,可选JSON XML ... // 默认AJAX 数据返回格式,可选JSON XML ...
'default_ajax_return' => 'JSON', 'default_ajax_return' => 'JSON',
// 默认JSONP格式返回的处理方法 // 默认JSONP格式返回的处理方法

View File

@@ -110,10 +110,8 @@ class App
} }
// 操作方法执行完成监听 // 操作方法执行完成监听
APP_HOOK && Hook::listen('action_end', $data); APP_HOOK && Hook::listen('action_end', $data);
// 单元测试模式下返回数据
if (IN_UNIT_TEST) { return $data; }
// 输出数据 // 输出数据
Response::returnData($data, Config::get('default_return_type'), Config::get('response_exit')); return Response::returnData($data, Config::get('default_return_type'), Config::get('response_type'));
} else { } else {
// 操作方法不是Public 抛出异常 // 操作方法不是Public 抛出异常
throw new \ReflectionException(); throw new \ReflectionException();
@@ -125,10 +123,8 @@ class App
$data = $method->invokeArgs($instance, [$action, '']); $data = $method->invokeArgs($instance, [$action, '']);
// 操作方法执行完成监听 // 操作方法执行完成监听
APP_HOOK && Hook::listen('action_end', $data); APP_HOOK && Hook::listen('action_end', $data);
// 单元测试模式下返回数据
if (IN_UNIT_TEST) { return $data; }
// 输出数据 // 输出数据
Response::returnData($data, Config::get('default_return_type'), Config::get('response_exit')); return Response::returnData($data, Config::get('default_return_type'), Config::get('response_type'));
} else { } else {
throw new Exception('method [ ' . (new \ReflectionClass($instance))->getName() . '->' . $action . ' ] not exists ', 10002); throw new Exception('method [ ' . (new \ReflectionClass($instance))->getName() . '->' . $action . ' ] not exists ', 10002);
} }
@@ -299,7 +295,7 @@ class App
// 路由检测 // 路由检测
if (!empty($config['url_route_on'])) { if (!empty($config['url_route_on'])) {
// 开启路由 则检测路由配置 // 开启路由 则检测路由配置
Route::register(!empty($config['route'])?$config['route']:null); Route::register(!empty($config['route']) ? $config['route'] : null);
$result = Route::check($path_info, $depr); $result = Route::check($path_info, $depr);
if (false === $result) { if (false === $result) {
// 路由无效 // 路由无效

View File

@@ -19,10 +19,10 @@ class Response
* @access protected * @access protected
* @param mixed $data 要返回的数据 * @param mixed $data 要返回的数据
* @param String $type 返回数据格式 * @param String $type 返回数据格式
* @param bool $exit 是否终止执行 * @param integer $return 是否返回数据 0 echo 1 return 2 exit
* @return void * @return void
*/ */
public static function returnData($data, $type = '', $exit = true) public static function returnData($data, $type = '', $return = 0)
{ {
$headers = [ $headers = [
'json' => 'application/json', 'json' => 'application/json',
@@ -52,12 +52,17 @@ class Response
$data = $handler . '(' . \org\Transform::jsonEncode($data) . ');'; $data = $handler . '(' . \org\Transform::jsonEncode($data) . ');';
break; break;
} }
//header('Content-Length:' . strlen($data));
if ($exit) { switch ($return) {
exit($data); case 1:
} else { return $data;
echo $data; case 2:
exit($data);
case 0:
default:
echo $data;
} }
} }
/** /**