lavarel 响应宏
宏的概念
计算机里的宏是批量处理的意思。比如我们在进行文本编辑的时候,打错字会有回退的功能——control+z;但是这是我们的键盘操作,计算机在进行处理的时候是不能理解的,他必须对最近两次操作进行比对,然后撤销最近一次操作的修改,然后展示文本。计算机虽然不理解control+z是什么意思,但是一定有一个预定义是在他遇到control+z的时候进行上述的操作。这种根据预定义的规则对频繁使用的一系列命令和序列转换成对应的输出(面对计算机)的定义叫做叫做宏。这种替换一般都在预编译的时候进行,称为宏展开;其实windows的图形界面交互就是频繁的使用宏,进行一系列的计算机操作,这一点类似封装,对频繁使用的操作封装成函数,使用时直接输入简短的函数名和参数,服务器就自动完成一些列的操作;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
lavarel 响应宏的更多相关文章
- lumen 响应宏
响应宏 laravel 中的响应宏,说明文档中有,lumen的没有找到.于是参考laravel 项目中的响应宏写了个Lumen的 1. 新建文件 App\Providers\ResponseMacro ...
- HTTP层 —— 响应
1.创建响应 字符串&数组 所有路由和控制器都会返回一个被发送到用户浏览器的响应,Laravel 提供了多种不同的方式来返回响应,最基本的响应就是从路由或控制器返回一个简单的字符串,框架会将这 ...
- laravel基础课程---8、laravel响应和视图(响应是什么)
laravel基础课程---8.laravel响应和视图(响应是什么) 一.总结 一句话总结: 就是向请求返回的响应数据(一般为html(视图),当然也可以是变量值):所有的路由及控制器必须返回某个类 ...
- Laravel5.1学习笔记6 响应
基本响应 附加头信息到响应 附加Cookie到响应 其他响应 View视图响应 JSON响应 File下载 重定向 重定向到命名路由 重定向到控制器Action 附带闪回Session数据重定向 响应 ...
- legend3---3、lavarel页面post请求错误之后跳转
legend3---3.lavarel页面post请求错误之后跳转 一.总结 一句话总结: 控制器:return back()->withInput()->with('error','验证 ...
- MFC绘图
//20171/121 两点一线 比如鼠标左击和鼠标弹起的两个消息 然后响应从而获取一条线2 添加响应函数方法 类图->右击->addwindowsmessage3 Dview和main中 ...
- laravel中用到的ServiceProvide
路由 全局限制 如果你希望路由参数可以总是遵循正则表达式,则可以使用 pattern 方法.你应该在 RouteServiceProvider 的 boot 方法里定义这些模式: 1 2 3 4 5 ...
- 黑马lavarel教程---11、响应处理
黑马lavarel教程---11.响应处理 一.总结 一句话总结: 如果在昂扬状态,看学习视频和运动时间重合,会很舒服 1.jquery的$.post参数为什么不需要占位? 因为每个参数的类型不同,可 ...
- iOS开发--Swift RAC响应式编程初探
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...
随机推荐
- 转:VMware中CentOS配置静态IP进行网络访问(NAT方式和桥接模式)
传送门:http://blog.csdn.net/zhangatle/article/details/77417310 其实这个博主的博客最是适合新手学习,踩过的坑让我再踩一踩,印象深刻 首先进行NA ...
- C#中Object转化为json对象
比如定义一个类: public class Lines { public string X1 { get; set; } public string X2 { get; set; } public s ...
- UIImageView添加圆角
最直接的方法就是使用如下属性设置: 1 2 3 imgView.layer.cornerRadius = 10; // 这一行代码是很消耗性能的 imgView.clipsToBounds = YES ...
- LintCode_68 二叉树后序遍历
题目 给出一棵二叉树,返回其节点值的后序遍历. 思路 后序比较麻烦 需要另外一个变量来记录当前节点入栈的次数 设计pair<TreeNode*, int> p; p.first 为二叉树节 ...
- SPSS分析技术:无序多元Logistic回归模型;美国总统大选的预测历史及预测模型
SPSS分析技术:无序多元Logistic回归模型:美国总统大选的预测历史及预测模型 在介绍有序多元Logistic回归分析的理论基础时,介绍过该模型公式有一个非常重要的假设,就是自变量对因变量多个类 ...
- 软件测试 → 第一章 基础-> 软件与软件危机
一. 软件概念 1.软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合.2.程序是按事先设计的功能和性能要求执行的指令序列.3.数据是使程序能正常操纵信息的数据结构. ...
- c++之手写strcmp
int strcmp(const char* str1, const char*str2){ assert(str1 != NULL&&str2 != NULL); while (*s ...
- mysql锁机制之表锁(三)
顾名思义,表锁就是一锁锁一整张表,在表被锁定期间,其他事务不能对该表进行操作,必须等当前表的锁被释放后才能进行操作.表锁响应的是非索引字段,即全表扫描,全表扫描时锁定整张表,sql语句可以通过执行计划 ...
- JavaScript--微博发布效果
效果图: 实现思路: 当发布按钮被点击时,又会分为三种情况 1.如果输入的内容为空,弹出提示:不能发布空微博 2.如果输入的文字超过120,弹出提示,微博内容不能超过120 3.正常发布微博到列表里 ...
- Otracle数据库定时任务--dbms_job
一.dbms_job涉及到的知识点 1.创建job: variable jobno number; dbms_job.submit(:jobno, --job号 'your_procedure;'-- ...