lavarel 响应宏

  1. 宏的概念
    计算机里的宏是批量处理的意思。好比咱们在进行文本编辑的时候,打错字会有回退的功能——control+z;可是这是咱们的键盘操做,计算机在进行处理的时候是不能理解的,他必须对最近两次操做进行比对,而后撤销最近一次操做的修改,而后展现文本。计算机虽然不理解control+z是什么意思,可是必定有一个预约义是在他遇到control+z的时候进行上述的操做。这种根据预约义的规则对频繁使用的一系列命令和序列转换成对应的输出(面对计算机)的定义叫作叫作宏。这种替换通常都在预编译的时候进行,称为宏展开;其实windows的图形界面交互就是频繁的使用宏,进行一系列的计算机操做,这一点相似封装,对频繁使用的操做封装成函数,使用时直接输入简短的函数名和参数,服务器就自动完成一些列的操做;php

  2. lavarel 的响应宏
    在编程的过程当中可能常常用到一些特定的响应,这时候咱们须要自定义响应宏把这些频繁的操做封装起来,再次使用的时候直接调用;
    (1)须要在\App\Providers 文件夹下新建一个服务提供者相似ResponseServiceProvider:前端

<?php

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));
        });
    }

(2)macro方法接受的第一个参数就是定义的响应名称,第二个参数是一个闭包函数,响应宏的闭包在 ResponseFactory 实现类或辅助函数 response 中调用宏名称的时候被执行:ajax

Route::get('upper/response', function() {
    return response()->upper('ppsty');
});

这样返回的响应就是响应宏处理后的结果;编程

3.若是咱们在与前端的交互种须要特定的响应数据,
好比json格式的数据:
{'isError'=>true,'isSuccess'=>false,'error'=>$error,'code'=> $code,'data'=>[],}
(1)这样咱们就须要对响应进行格式封装:json

<?php

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);
        });
    }
}

(2)对格式的操做须要新建一个AjaxResponse,把对格式的规范写到里面:windows

class AjaxResponse
{
public static function toBeJson($msg, $code = 400)
    {
        return [
            'isError' => false,
            'isSuccess'=> true,
            'msg'    => $msg,
            'code'     => $code,
            'data'     => [],
        ];
    }
}

这样返回的就是规范以后的响应返回;服务器

https://blog.csdn.net/weixin_38674371/article/details/78459277?locationNum=1&fps=1markdown

相关文章
相关标签/搜索