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 全角转半角实现代码
May 16 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 PHP
删除html标签得到纯文本可处理嵌套的标签
Apr 28 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
Dec 15 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
PHP基于GD库的图像处理方法小结
Sep 27 PHP
PHP实现 APP端微信支付功能
Jun 22 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 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 生成饼图 三维饼图
2009/09/28 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
Python单链表简单实现代码
2016/04/27 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
母校寄语大全
2014/04/10 职场文书
完美的中文自荐信
2014/05/24 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
岗位职责说明书模板
2014/07/30 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
工商局个人工作总结
2015/03/03 职场文书
合作协议书格式范本
2016/03/21 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
Python 文字识别
2022/05/11 Python
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python