搜索
系统检测到您的用户名不符合规范:

【已解决】

浏览:702 发布日期:2021年07月25日 分类:ThinkPHP6专区 关键字: Bug反馈
在Thinkphp6中遇到了Bug
代码大致如下// 控制器 继承于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);
}
缓存是用的本地redis

redis中对应数据: 见附件 -> 图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类的数据呢?









【原因】

控制器中的方法与base中的get重名,导致方法重写,一直请求的是控制器中的get方法,与TP无关
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
Lim1cn
积分:90 等级:LV0
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /