代码大致如下
// 控制器 继承于Base类
$task = TaskModel::where('id', $task_id)->find();
if(!$task){
// 任务不存在
return $this->failed('任务不存在');
}
$userinfo = $this->getUserInfo($token);
$uid = $userinfo->id;// Base类中的调用到的方法及常量
const CACHE_USER_INFO = 'USER_INFO_%s';
function failed($msg = '', $data = []){
return $this->json(-1, $data, $msg);
}
function json($code = -1, $data = [], $msg = ''){
return json(['code' => $code, 'data' => $data, 'msg' => $msg])->header(['content-type' => 'application/json; charset=utf-8']);
}
function getUserInfo($token = ''){
return $this->get(SELF::CACHE_USER_INFO, $token);
}
// 取缓存
function get(){
$params = func_get_args();
$key = call_user_func_array('sprintf', $params);
return cache($key);
}缓存是用的本地redisredis中对应数据: 见附件 -> 图1
请求信息及报错: 见附件 -> 图2
明明我Redis中存的是UserModel类 为什么报错会是Response\Json的报错呢?
我尝试输出了我获取到的UserInfo,仍然是Response\Json类的,数据如下
object(think\response\Json)#74 (10) {
["options":protected]=>
array(1) {
["json_encode_param"]=>
int(256)
}
["contentType":protected]=>
string(16) "application/json"
["data":protected]=>
array(3) {
["code"]=>
int(-1)
["data"]=>
array(0) {
}
["msg"]=>
string(15) "任务不存在"
}
.....我可以确认代码执行到了getUserinfo 因为return并没有返回那么为什么Userinfo中获取到的会是think\Response\Json类的数据呢?
【原因】
控制器中的方法与ba
最佳答案