lavarel 響應(yīng)宏
宏的概念
計算機(jī)里的宏是批量處理的意思。比如我們在進(jìn)行文本編輯的時候,打錯字會有回退的功能——control+z;但是這是我們的鍵盤操作,計算機(jī)在進(jìn)行處理的時候是不能理解的,他必須對最近兩次操作進(jìn)行比對,然后撤銷最近一次操作的修改,然后展示文本。計算機(jī)雖然不理解control+z是什么意思,但是一定有一個預(yù)定義是在他遇到control+z的時候進(jìn)行上述的操作。這種根據(jù)預(yù)定義的規(guī)則對頻繁使用的一系列命令和序列轉(zhuǎn)換成對應(yīng)的輸出(面對計算機(jī))的定義叫做叫做宏。這種替換一般都在預(yù)編譯的時候進(jìn)行,稱為宏展開;其實windows的圖形界面交互就是頻繁的使用宏,進(jìn)行一系列的計算機(jī)操作,這一點類似封裝,對頻繁使用的操作封裝成函數(shù),使用時直接輸入簡短的函數(shù)名和參數(shù),服務(wù)器就自動完成一些列的操作;
lavarel 的響應(yīng)宏
在編程的過程中可能經(jīng)常用到一些特定的響應(yīng),這時候我們需要自定義響應(yīng)宏把這些頻繁的操作封裝起來,再次使用的時候直接調(diào)用;
(1)需要在\App\Providers 文件夾下新建一個服務(wù)提供者類似ResponseServiceProvider:
namespace App\Providers;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\ServiceProvider;
class ResponseServiceProvider extends ServiceProvider
{
/**
* Perform post-registration booting of services.
*
* @return void
*/
public function boot()
{
Response::macro('upper', function ($value) {
return Response::make(strtoupper($value));
});
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(2)macro方法接受的第一個參數(shù)就是定義的響應(yīng)名稱,第二個參數(shù)是一個閉包函數(shù),響應(yīng)宏的閉包在 ResponseFactory 實現(xiàn)類或輔助函數(shù) response 中調(diào)用宏名稱的時候被執(zhí)行:
Route::get('upper/response', function() {
return response()->upper('ppsty');
});
1
2
3
4
這樣返回的響應(yīng)就是響應(yīng)宏處理后的結(jié)果;
3.如果我們在與前端的交互種需要特定的響應(yīng)數(shù)據(jù),
比如json格式的數(shù)據(jù):
{'isError'=>true,'isSuccess'=>false,'error'=>$error,'code'=> $code,'data'=>[],}
(1)這樣我們就需要對響應(yīng)進(jìn)行格式封裝:
namespace App\Providers;
use Illuminate\Support\Facades\Response;
use App\Services\AjaxResponse;
use Illuminate\Support\ServiceProvider;
class ResponseServiceProvider extends ServiceProvider
{
/**
* Perform post-registration booting of services.
*
* @return void
*/
public function boot()
{
Response::macro('toBeJson', function ($msg = [], $code = 200, $sStatus = 200, array $xHeaders = [], $sOptions = 0) {
return response()->json(AjaxResponse::ajax($msg, $code), $sStatus, $xHeaders, $sOptions);
});
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(2)對格式的操作需要新建一個AjaxResponse,把對格式的規(guī)范寫到里面:
class AjaxResponse
{
public static function toBeJson($msg, $code = 400)
{
return [
'isError' => false,
'isSuccess'=> true,
'msg' => $msg,
'code' => $code,
'data' => [],
];
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
這樣返回的就是規(guī)范之后的響應(yīng)返回;
https://blog.csdn.net/weixin_38674371/article/details/78459277?locationNum=1&fps=1
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。