avatar

mdo

Hello

  • 首页
  • 知识库
  • 归档
  • 标签
  • 关于
主页 thinkphp 统一结果返回处理类
文章

thinkphp 统一结果返回处理类

发表于 2025-12-2 更新于 2025-12- 2
作者 mdo
6~8 分钟 阅读

返回结果处理,归根结底 主要是有两点 数据结构和返回的数据类型

1、数据类型 :一般情况下,API 需要返回数据类型是JSON

2、数据结构:需要一个code来表明 返回结果状态,一个msg用户状态的描述 一个data用于包含所需要的返回的数据

明白上面两点,后续的无非就是就行封装,具体怎么封装,看个人习惯。

<?php

declare(strict_types=1);

namespace wangqy\tcc\utils;

use think\Response;

class Result
{
    /**
     * 结果状态码
     *
     * @var int
     */
    protected $code = 0;
    /**
     * http请求状态码
     *
     * @var int
     */
    protected $httpCode = 200;

    /**
     * 响应结果类型.
     *
     * @var string
     */
    protected $responseType = 'json';

    /**
     * 失败返回信息.
     *
     * @param $code
     * @param $msg
     * @param $data
     *
     * @return Response
     */
    public function fail($msg, $code, $data = null)
    {
        return $this->make($code, $msg, $data);
    }

    /**
     * 仅返回说明.
     *
     * @param $msg
     *
     * @return Response
     */
    public function onlySucMsg($msg = 'success')
    {
        return $this->success(null, $msg);
    }

    /**
     * @return $this
     */
    public function setCode(int $code)
    {
        $this->code = $code;

        return $this;
    }

    /**
     * @return $this
     */
    public function setHttpCode(int $httpCode)
    {
        $this->httpCode = $httpCode;

        return $this;
    }

    /**
     * @return $this
     */
    public function setResponseType(string $responseType)
    {
        $this->responseType = $responseType;

        return $this;
    }

    /**
     * 成功返回信息.
     *
     * @param $data
     * @param $msg
     *
     * @return Response
     */
    public function success($data = null, $msg = 'success')
    {
        return $this->make($this->code, lang($msg), $data);
    }

    /**
     * @param int        $code
     * @param string     $msg
     * @param null|array $data
     *
     * @return Response
     */
    private function make($code, $msg, $data = null)
    {
        $extra = [
            'log_id' => $GLOBALS['log_id'] ?? '',
            'now' => time(),
        ];

        $res = compact('code', 'msg', 'extra');

        if (null !== $data) {
            $res['data'] = $data;
        }

        return Response::create($res, $this->responseType, $this->httpCode);
    }
}

在公共函数中:

if (!function_exists('result')) {
    /**
     * 获取当前json对象实例.
     *
     * @return App|object|Result
     */
    function result()
    {
        return app('result');
    }
}

在appService.php文件中增加

public $bind = [
    'result' => Result::class,
];

实例:

public function index()
{
    $data = ['name'=>'wordpress'];
    return result()->success($data);
}
知识库
许可协议:  CC BY 4.0
分享

相关文章

10月 7, 2026

比尔盖茨的智慧:想多赚钱,就每天循环做这3件事

我们总有一种非常固执的错觉,认为那些站在财富金字塔顶端的人,必然拥有某种超越常人的特异功能。我们在脑海中给比尔盖茨这样的大佬描绘了一幅极其悲壮的奋斗画像。大家总觉得,他之所以能富可敌国,肯定是因为他每天只睡三个小时,同时对着八个电脑屏幕疯狂敲击键盘,每一秒钟都在做出价值几亿美金的生死抉择。 为了模仿

9月 28, 2026

程序员越想创业,越不要急着动手

一个能源方面的前辈找到我,希望通过我把一些人工的工作 AI 自动化。 能源方面我不懂,找 Gemini 聊完发现这个是可以复制的,非常兴奋。我跟老婆说,这个项目做好以后可以做成平台,推广到其他公司,你就等着做总裁夫人吧! 她听完以后跟我说,这个项目还是太定制化,和我之前做的一个项目很像。 那个项目一

9月 25, 2026

忍了一年多,我终于对i18n下手了过去一年,我主要参与国际机票业务的开发工作,因此每天都要和多语言(i18n)打交道

前言 大家好,我是奈德丽。 过去一年,我主要参与国际机票业务的开发工作,因此每天都要和多语言(i18n)打交道。熟悉我的朋友都知道,我这个人比较“惜力”(并不是,实际上只是忍不下去了),对于重复笨拙的工作非常抵触,于是,我开始思考如何优化团队的多语言管理模式。 痛点背景 先说说我们在机票项目中遇到的

下一篇

ThinkPHP5.1设置允许跨域的几种办法

上一篇

ThinkPHP5之自定义全局异常

最近更新

  • 比尔盖茨的智慧:想多赚钱,就每天循环做这3件事
  • iOS 侧载(Sideloading)工具
  • 程序员越想创业,越不要急着动手
  • 注册 Chat Participant
  • 中秋给在外游子的一封信

热门标签

API CodeGeex Coding Cursor DeepSeek Docker Gitkraken Harness Laravel Management

目录

©2026 mdo. 保留部分权利。