最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ThinkPHP?通用的API格式封裝實(shí)例代碼

 更新時(shí)間:2023年08月29日 14:22:28   作者:殺死一只知更鳥debug  
這篇文章主要介紹了ThinkPHP通用的API格式封裝,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

ThinkPHP 通用的API格式封裝

1.創(chuàng)建status.php 用于設(shè)置通用的狀態(tài)碼返回枚舉類

<?php
return[
    "success"=>1,
    "error"=>0,
    "controller_not_found"=>-1,
    "action_not_found"=>-2,
];

2.將API返回格式統(tǒng)一封裝

<?php
/**API 統(tǒng)一格式化
 * @param $status
 * @param $message
 * @param $data
 * @param $httpStatus
 * @return \think\response\Json
 */
function show($status,$message,$data=[],$httpStatus=200){
    $result = [
      "status"=>$status,
      "message"=>$message,
      "data"=>$data,
    ];
    return json($result,$httpStatus);
}

3.重寫B(tài)aseController中的__call方法

在BaseController中重寫__call方法,當(dāng)調(diào)用不存在的方法時(shí),就會(huì)調(diào)用__call方法,會(huì)傳入請(qǐng)求方法和參數(shù)

<?php
declare (strict_types = 1);
namespace app;
use think\App;
use think\exception\ValidateException;
use think\Validate;
/**
 * 控制器基礎(chǔ)類
 */
abstract class BaseController
{
    /**
     * Request實(shí)例
     * @var \think\Request
     */
    protected $request;
    /**
     * 應(yīng)用實(shí)例
     * @var \think\App
     */
    protected $app;
    /**
     * 是否批量驗(yàn)證
     * @var bool
     */
    protected $batchValidate = false;
    /**
     * 控制器中間件
     * @var array
     */
    protected $middleware = [];
    /**
     * 構(gòu)造方法
     * @access public
     * @param  App  $app  應(yīng)用對(duì)象
     */
    public function __construct(App $app)
    {
        $this->app     = $app;
        $this->request = $this->app->request;
        // 控制器初始化
        $this->initialize();
    }
    // 初始化
    protected function initialize()
    {}
    /**
     * 驗(yàn)證數(shù)據(jù)
     * @access protected
     * @param  array        $data     數(shù)據(jù)
     * @param  string|array $validate 驗(yàn)證器名或者驗(yàn)證規(guī)則數(shù)組
     * @param  array        $message  提示信息
     * @param  bool         $batch    是否批量驗(yàn)證
     * @return array|string|true
     * @throws ValidateException
     */
    protected function validate(array $data, string|array $validate, array $message = [], bool $batch = false)
    {
        if (is_array($validate)) {
            $v = new Validate();
            $v->rule($validate);
        } else {
            if (strpos($validate, '.')) {
                // 支持場景
                [$validate, $scene] = explode('.', $validate);
            }
            $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
            $v     = new $class();
            if (!empty($scene)) {
                $v->scene($scene);
            }
        }
        $v->message($message);
        // 是否批量驗(yàn)證
        if ($batch || $this->batchValidate) {
            $v->batch(true);
        }
        return $v->failException(true)->check($data);
    }
	// 重寫__call部分
    public function __call(string $name, array $arguments)
    {
        // TODO: Implement __call() method.
        return show(config("status.action_not_found"),"找不到{$name}方法",null,404);
    }
}

在這里插入圖片描述

4.在控制器下面新建Error控制器,然后添加__call方法

在控制器下面新建Error控制器,然后添加__call方法,這樣就會(huì)調(diào)用不存在的控制器的時(shí)候會(huì)調(diào)用__call方法,會(huì)傳入請(qǐng)求的控制器名稱和參數(shù)

<?php
namespace app\index\controller;
class Error{
    public function __call(string $name, array $arguments)
    {
        // TODO: Implement __call() method.
        return show(config("status.controller_not_found"),"找不到{$name}控制器",null,404);
    }
}

測(cè)試

在這里插入圖片描述

在這里插入圖片描述

假定一個(gè)成功的請(qǐng)求,測(cè)試一下

public function jsonTest(){
    $data = ['name' => 'thinkphp', 'status' => '1'];
    return show(config("status.success"),"請(qǐng)求成功",$data);
}

在這里插入圖片描述

到此這篇關(guān)于ThinkPHP 通用的API格式封裝的文章就介紹到這了,更多相關(guān)ThinkPHP  API格式封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Yii框架視圖、視圖布局、視圖數(shù)據(jù)塊操作示例

    Yii框架視圖、視圖布局、視圖數(shù)據(jù)塊操作示例

    這篇文章主要介紹了Yii框架視圖、視圖布局、視圖數(shù)據(jù)塊操作,結(jié)合實(shí)例形式分析了Yii框架相關(guān)的視圖、布局、控制器及數(shù)據(jù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • thinkPHP中多維數(shù)組的遍歷方法

    thinkPHP中多維數(shù)組的遍歷方法

    這篇文章主要介紹了thinkPHP中多維數(shù)組的遍歷方法,以簡單實(shí)例形式分析了thinkPHP中foreach語句的使用技巧,需要的朋友可以參考下
    2016-01-01
  • Symfony2學(xué)習(xí)筆記之插件格式分析

    Symfony2學(xué)習(xí)筆記之插件格式分析

    這篇文章主要介紹了Symfony2的插件格式,詳細(xì)分析了Symfony2的插件原理及創(chuàng)建與使用插件的相關(guān)技巧,需要的朋友可以參考下
    2016-03-03
  • ThinkPHP中ajax使用實(shí)例教程

    ThinkPHP中ajax使用實(shí)例教程

    這篇文章主要介紹了ThinkPHP中ajax使用, 是ThinkPHP開發(fā)中非常實(shí)用的技巧,需要的朋友可以參考下
    2014-08-08
  • php parse_str() 函數(shù)的定義和用法

    php parse_str() 函數(shù)的定義和用法

    下面小編就為大家?guī)硪黄猵hp parse_str() 函數(shù)的定義和用法。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • php數(shù)組去重復(fù)數(shù)據(jù)示例

    php數(shù)組去重復(fù)數(shù)據(jù)示例

    這篇文章主要介紹了php數(shù)組去重復(fù)數(shù)據(jù)示例,有時(shí)候獲得的php數(shù)組中總是出現(xiàn)value重復(fù)的,使用下面的方法就可以去掉重復(fù)數(shù)據(jù)
    2014-02-02
  • 基于php 隨機(jī)數(shù)的深入理解

    基于php 隨機(jī)數(shù)的深入理解

    本篇文章是對(duì)php隨機(jī)數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php函數(shù)重載的替代方法--偽重載詳解

    php函數(shù)重載的替代方法--偽重載詳解

    對(duì)于弱類型語言來說,PHP函數(shù)重載,并不像一般的OOP那樣。而弱類型本來就不區(qū)分,所以無法通過這些來實(shí)現(xiàn)。但是,可以通過下面的方法來實(shí)現(xiàn)簡單的偽重載吧。
    2015-05-05
  • 純PHP代碼實(shí)現(xiàn)支付寶批量付款

    純PHP代碼實(shí)現(xiàn)支付寶批量付款

    最近在做一個(gè)使用支付寶轉(zhuǎn)賬的項(xiàng)目,其中有需求把我難到了:批量支付成功后不知道怎么接收系統(tǒng)返回的通知,經(jīng)過朋友幫忙,此功能實(shí)現(xiàn),下面小編把具體代碼整理分享給大家,供大家參考
    2015-12-12
  • thinkphp文件處理類Dir.class.php的用法分析

    thinkphp文件處理類Dir.class.php的用法分析

    這篇文章主要介紹了thinkphp文件處理類Dir.class.php的用法,以實(shí)例形式分析了基于文件處理類Dir.class.php的自定義函數(shù)del的使用,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-12-12

最新評(píng)論

吴旗县| 凤庆县| 河西区| 图木舒克市| 日喀则市| 丹巴县| 和平县| 三江| 聊城市| 阿克苏市| 霍州市| 荔波县| 哈尔滨市| 金平| 兴文县| 柘城县| 蕉岭县| 鄂伦春自治旗| 屏东市| 阳谷县| 达尔| 乌兰察布市| 永胜县| 青阳县| 新龙县| 会东县| 古浪县| 海林市| 乌海市| 银川市| 连州市| 宣武区| 顺昌县| 东至县| 莆田市| 齐河县| 咸宁市| 建昌县| 澄城县| 西昌市| 长岛县|