lavarel 响应宏

lavarel 响应宏

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

  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 中调用宏名称的时候被执行:

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

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

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

<?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,把对格式的规范写到里面:

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=1

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/113201.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • sdio接口定义_sdio接口

    sdio接口定义_sdio接口转:https://www.cnblogs.com/hellokitty2/p/10981084.htmlSDIO接口一、SDIO简介SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。SDIO1.0标准定义了两种类型的SDIO卡:1.全速的SDIO卡,传输率可以超过100Mbps;2.低速的SDIO卡,支援的时脉速率…

  • Visual Studio的sln文件解析

    Visual Studio的sln文件解析查看更多:https://www.yuque.com/docs/share/b9a1076b-5094-4f97-b958-18fbafcaae0c?#

  • 字符串分割与拼接「建议收藏」

    字符串分割与拼接「建议收藏」.字符串分割与拼接//@””   空的字符串对象     ——-分割     NSString * ptr = @”I am a man”;     NSArray * array = [ptr componentsSeparatedByString:@” “];//将字符串整体作为分割条件 返回值为NSArray不可变数组     NSMutableArray * array1 = 

  • PriorityQueue详解

    PriorityQueue详解作者:王一飞 ,叩丁狼高级讲师。原创文章,转载请注明出处。     概念PriorityQueue一个基于优先级的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的Comparator进行排序,具体取决于所使用的构造方法。该队列不允许使用null元素也不允许插入不可比较的对象(没有实现Comparable接口的对象)。PriorityQueue队…

  • 一个栈的输入序列为1 2 3 4 5 的出站顺序的理解

    一个栈的输入序列为1 2 3 4 5 的出站顺序的理解一个栈的输入序列为1 2 3 4 5 的出站顺序的理解

  • python qt是什么_初识Python与Qt「建议收藏」

    python qt是什么_初识Python与Qt「建议收藏」Python的3.0版本,在开发阶段被称为Python3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python3.0在设计的时候就没有考虑向下兼容。许多针对早期Python版本设计的程序都无法在Python3.0上正常运行。为了照顾现有程序,Python2.6作为一个过渡版本,基本使用了Python2.x的语法和库,同时考虑了向Pyt…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号