美文网首页
Laravel 编写API封装Json格式输出

Laravel 编写API封装Json格式输出

作者: 骑代码奔小康 | 来源:发表于2019-09-25 13:41 被阅读0次

Trait解释

php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性
用法:在类中使用use关键字,声明要组合的trait名称。具体的trait声明使用trait关键字,trait不能实例化。
(假装会解释一样,其实是在网上抄的)
摘抄链接:https://blog.csdn.net/qq_35255775/article/details/80610586

一、按个人理解就是在类中引入其它类的方法,只不过我们在PHP中只能继承一个类的属性和方法,用trait的话多少个都可以,只需要use一下
二、我一般拿来写公用的方法(接口统一返回json,递归无限极分类,微信开发中生成随机字符串......等等)

开始编写代码(实现Json格式输出)

在laravel框架中创建ResponseJson.php文件,具体路径 “ app\Http\Response\ ResponseJson.php”

<?php

namespace app\Http\Response;

/**
 * 统一接口返回到前端的文件
 * Trait方式返回
 * php从以前到现在一直都是单继承的语言,
 * 无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性
*/

trait ResponseJson
{
    /**
     * 返回一个json
     * @param $code 状态码
     * @param $message 返回说明
     * @param $data 返回数据集合
     * @return false | string
    */
    private function jsonResponse($code, $message, $data){
        $content = [
            'code' => $code,
            'msg'  => $message,
            'data' => $data
        ];
        return json_encode($content);
    }

    /**
     * 成功的时候返回结果
     * @param $data 返回数据集合
     * @return false | string
    */
    public function jsonSuccessData( $data = [] ){
        return $this->jsonResponse(0, 'success', $data);
    }

    /**
     * 失败的时候返回
     * @param $code 状态码
     * @param $message 返回说明
     * @param $data 返回数据集合
     * @return false | string
    */
    public function jsonErrorData( $code, $message, $data = [] ){
        return $this->jsonResponse($code, $message, $data);
    }
}

在控制器中使用Trait

  1. 这个控制器已经继承了名叫BasicsController
  2. 在这个控制器中 use ResponseJson;
    3.直接在控制器方法中$this就可以调用
<?php

namespace App\Http\Controllers\xiaocx;

use App\Http\Controllers\BasicsController as Base;
use App\Http\Response\ResponseJson;
use Illuminate\Support\Facades\DB;

class BannerController extends Base

{

    use ResponseJson; // 引入Trait统一返回Json的方法

    public function index(){
        // 调用失败时的返回方法
        return  $this->jsonErrorData(1001, '用户名或密码错误');
        // 前台输出 {"code":1001,"msg":"用户名或密码错误","data":[]}        

        // 调用成功时的返回方法
        return $this->jsonSuccessData(['a'=>123132, 'b'=> 666666]);
        // 前台输出 {"code":0,"msg":"success","data":{"a":123132,"b":666666}}
    }
}

相关文章

网友评论

      本文标题:Laravel 编写API封装Json格式输出

      本文链接:https://www.haomeiwen.com/subject/axrlyctx.html