ThinkPHP?通用的API格式封裝實(shí)例代碼
ThinkPHP 通用的API格式封裝
1.創(chuàng)建status.php 用于設(shè)置通用的狀態(tài)碼返回枚舉類(lè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.重寫(xiě)B(tài)aseController中的__call方法
在BaseController中重寫(xiě)__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ǔ)類(lèi) */ 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, '.')) { // 支持場(chǎng)景 [$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); } // 重寫(xiě)__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)求的控制器名稱(chē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)文章希望大家以后多多支持腳本之家!
- ThinkPHP?通用的API格式封裝實(shí)例代碼
- 漂亮的thinkphp 跳轉(zhuǎn)頁(yè)封裝示例
- PHP封裝類(lèi)似thinkphp連貫操作數(shù)據(jù)庫(kù)Db類(lèi)與簡(jiǎn)單應(yīng)用示例
- thinkPHP框架中l(wèi)ayer.js的封裝與使用方法示例
- ThinkPHP5郵件發(fā)送服務(wù)封裝(可發(fā)附件)
- php封裝的數(shù)據(jù)庫(kù)函數(shù)與用法示例【參考thinkPHP】
- 封裝ThinkPHP的一個(gè)文件上傳方法實(shí)例
- thinkphp中連接oracle時(shí)封裝方法無(wú)法用的解決辦法
相關(guān)文章
Yii中CArrayDataProvider和CActiveDataProvider區(qū)別實(shí)例分析
這篇文章主要介紹了Yii中CArrayDataProvider和CActiveDataProvider區(qū)別,結(jié)合實(shí)例形式分析了Yii中CArrayDataProvider和CActiveDataProvider的具體功能與用法,需要的朋友可以參考下2016-03-03PHP模板引擎Smarty內(nèi)建函數(shù)foreach,foreachelse用法分析
這篇文章主要介紹了PHP模板引擎Smarty內(nèi)建函數(shù)foreach,foreachelse用法,結(jié)合實(shí)例形式分析了foreach,foreachelse的功能與具體使用技巧,需要的朋友可以參考下2016-04-042017年最好用的9個(gè)php開(kāi)發(fā)工具推薦(超好用)
對(duì)于php初學(xué)者不知道哪個(gè)php開(kāi)發(fā)工具好用,下面小編給大家分享2017年最好用的9個(gè)php開(kāi)發(fā)工具推薦,感興趣的朋友一起看看吧2017-10-10PHP實(shí)現(xiàn)隨機(jī)生成水印圖片功能
這篇文章主要為大家詳細(xì)介紹了PHP生成隨機(jī)水印圖片的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Laravel使用memcached緩存對(duì)文章增刪改查進(jìn)行優(yōu)化的方法
這篇文章主要介紹了Laravel使用memcached緩存對(duì)文章增刪改查進(jìn)行優(yōu)化的方法,結(jié)合實(shí)例形式分析了Laravel框架中使用memcached緩存實(shí)現(xiàn)針對(duì)增刪改查等操作的優(yōu)化功能,需要的朋友可以參考下2016-10-10Ajax實(shí)時(shí)驗(yàn)證用戶(hù)名/郵箱等是否已經(jīng)存在的代碼打包
一個(gè)網(wǎng)站采用Ajax技術(shù),不僅可以改善網(wǎng)站的用戶(hù)體驗(yàn)性,而且大大節(jié)約了寶貴的帶寬,減輕了服務(wù)器負(fù)荷(不再需要交互整個(gè)網(wǎng)頁(yè)內(nèi)容,而是局部)。2011-12-12免費(fèi)手機(jī)號(hào)碼歸屬地API查詢(xún)接口和PHP使用實(shí)例分享
最近在做全國(guó)性的行業(yè)分類(lèi)信息網(wǎng)站,需要用到手機(jī)號(hào)歸屬地顯示功能,于是就穿梭于各大權(quán)威站點(diǎn)之間偷來(lái)了API的接口地址。 分享出來(lái),大家可以用到就拿去呵2014-04-04