laravel5创建service provider和facade的方法详解


Posted in PHP onJuly 26, 2016

本文实例讲述了laravel5创建service provider和facade的方法。分享给大家供大家参考,具体如下:

laravel5创建一个facade,可以将某个service注册个门面,这样,使用的时候就不需要麻烦地use 了。文章用一个例子说明怎么创建service provider和 facade。

目标

我希望我创建一个AjaxResponse的facade,这样能直接在controller中这样使用:

class MechanicController extends Controller {
  public function getIndex()
  {
    \AjaxResponse::success();
  }
}

它的作用就是规范返回的格式为

{
  code: "0"
  result: {
  }
}

步骤

创建Service类

在app/Services文件夹中创建类

<?php namespace App\Services;
class AjaxResponse {
  protected function ajaxResponse($code, $message, $data = null)
  {
    $out = [
      'code' => $code,
      'message' => $message,
    ];
    if ($data !== null) {
      $out['result'] = $data;
    }
    return response()->json($out);
  }
  public function success($data = null)
  {
    $code = ResultCode::Success;
    return $this->ajaxResponse(0, '', $data);
  }
  public function fail($message, $extra = [])
  {
    return $this->ajaxResponse(1, $message, $extra);
  }
}

这个AjaxResponse是具体的实现类,下面我们要为这个类做一个provider

创建provider

在app/Providers文件夹中创建类

<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AjaxResponseServiceProvider extends ServiceProvider {
  public function register()
  {
    $this->app->singleton('AjaxResponseService', function () {
      return new \App\Services\AjaxResponse();
    });
  }
}

这里我们在register的时候定义了这个Service名字为AjaxResponseService

下面我们再定义一个门脸facade

创建facade

在app/Facades文件夹中创建类

<?php namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class AjaxResponseFacade extends Facade {
  protected static function getFacadeAccessor() { return 'AjaxResponseService'; }
}

修改配置文件

好了,下面我们只需要到app.php中挂载上这两个东东就可以了

<?php
return [
  ...
  'providers' => [
    ...
    'App\Providers\RouteServiceProvider',
    'App\Providers\AjaxResponseServiceProvider',
  ],
  'aliases' => [
    ...
    'Validator' => 'Illuminate\Support\Facades\Validator',
    'View'   => 'Illuminate\Support\Facades\View',
    'AjaxResponse' => 'App\Facades\AjaxResponseFacade',
  ],
];

总结

laravel5中使用facade还是较为容易的,基本和4没啥区别。

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
将一维或多维的数组连接成一个字符串的php代码
Aug 08 PHP
检测png图片是否完整的php代码
Sep 06 PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
php使用MySQL保存session会话的方法
Jun 26 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
Yii2实现ActiveForm ajax提交
May 26 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 PHP
layui数据表格自定义每页条数limit设置
Oct 26 PHP
实例化php类时传参的方法分析
Jun 05 PHP
Laravel5权限管理方法详解
Jul 26 #PHP
JavaScript实现删除电脑的关机键
Jul 26 #PHP
php 读取输出其他文件的实现方法
Jul 26 #PHP
php实现贪吃蛇小游戏
Jul 26 #PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 #PHP
php禁用函数设置及查看方法详解
Jul 25 #PHP
Yii2中Restful API原理实例分析
Jul 25 #PHP
You might like
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
arguments对象
2006/11/20 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
当当网软件测试笔试题
2015/11/24 面试题
总监职责范文
2013/11/09 职场文书
童装店创业计划书
2014/01/09 职场文书
自我评价的范文
2014/02/02 职场文书
个人工作表现自我评价
2015/03/06 职场文书
财务管理制度范本
2015/08/04 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书