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 相关文章推荐
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
PHP MemCached 高级缓存应用代码
Aug 05 PHP
php+js iframe实现上传头像界面无跳转
Apr 29 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
Jan 22 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
php为字符串前后添加指定数量字符的方法
May 04 PHP
PHP自毁程序(慎用)
Jul 09 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
php格式化时间戳
2016/12/17 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
JQuery index()方法使用代码
2010/06/02 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
编写简单的Python程序来判断文本的语种
2015/04/07 Python
深入浅析python定时杀进程
2016/06/06 Python
关于python的list相关知识(推荐)
2017/08/30 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
利用Python计算KS的实例详解
2020/03/03 Python
WiFi云数码相框:Nixplay
2018/07/05 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
财产公证书样本
2014/04/04 职场文书
学生手册评语
2014/05/05 职场文书
酒店员工培训方案
2014/06/02 职场文书
JVM钩子函数的使用场景详解
2021/08/23 Java/Android