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 相关文章推荐
BBS(php &amp; mysql)完整版(一)
Oct 09 PHP
php 图片上传类代码
Jul 17 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
php二维数组转成字符串示例
Feb 17 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
Dec 16 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
深入理解PHP中的count函数
May 31 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
php7 安装yar 生成docker镜像
May 09 PHP
Laravel Reponse响应客户端示例详解
Sep 03 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
个人站长制做网页常用的php代码
2007/03/03 PHP
php实现倒计时效果
2015/12/19 PHP
php中strtotime函数性能分析
2016/11/20 PHP
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
javascript工具库代码
2012/03/29 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
python是怎么被发明的
2020/06/15 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
weblogic面试题
2016/03/07 面试题
计算机专业毕业生的自我评价
2013/11/18 职场文书
活动志愿者自荐信
2014/01/27 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
关于Python中进度条的六个实用技巧分享
2022/04/05 Python