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

ThinkPHP?通用的API格式封裝實例代碼

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

ThinkPHP 通用的API格式封裝

1.創(chuàng)建status.php 用于設置通用的狀態(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方法,當調(diào)用不存在的方法時,就會調(diào)用__call方法,會傳入請求方法和參數(shù)

<?php
declare (strict_types = 1);
namespace app;
use think\App;
use think\exception\ValidateException;
use think\Validate;
/**
 * 控制器基礎類
 */
abstract class BaseController
{
    /**
     * Request實例
     * @var \think\Request
     */
    protected $request;
    /**
     * 應用實例
     * @var \think\App
     */
    protected $app;
    /**
     * 是否批量驗證
     * @var bool
     */
    protected $batchValidate = false;
    /**
     * 控制器中間件
     * @var array
     */
    protected $middleware = [];
    /**
     * 構(gòu)造方法
     * @access public
     * @param  App  $app  應用對象
     */
    public function __construct(App $app)
    {
        $this->app     = $app;
        $this->request = $this->app->request;
        // 控制器初始化
        $this->initialize();
    }
    // 初始化
    protected function initialize()
    {}
    /**
     * 驗證數(shù)據(jù)
     * @access protected
     * @param  array        $data     數(shù)據(jù)
     * @param  string|array $validate 驗證器名或者驗證規(guī)則數(shù)組
     * @param  array        $message  提示信息
     * @param  bool         $batch    是否批量驗證
     * @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);
        // 是否批量驗證
        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方法,這樣就會調(diào)用不存在的控制器的時候會調(diào)用__call方法,會傳入請求的控制器名稱和參數(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);
    }
}

測試

在這里插入圖片描述

在這里插入圖片描述

假定一個成功的請求,測試一下

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

在這里插入圖片描述

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

相關文章

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

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

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

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

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

    Symfony2學習筆記之插件格式分析

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

    ThinkPHP中ajax使用實例教程

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

茶陵县| 道孚县| 泸定县| 永修县| 绵阳市| 三穗县| 铜川市| 高雄市| 和静县| 阿勒泰市| 彰化县| 山阳县| 仲巴县| 昌邑市| 榆社县| 灌阳县| 慈溪市| 大同县| 山阳县| 界首市| 东至县| 且末县| 即墨市| 青海省| 泗阳县| 炉霍县| 长治市| 鄂州市| 辛集市| 阳信县| 云龙县| 武义县| 潮安县| 高雄县| 额尔古纳市| 乐亭县| 马鞍山市| 盐津县| 离岛区| 大同县| 沭阳县|