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 相关文章推荐
PHPMyAdmin 快速配置方法
May 11 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
eaglephp使用微信api接口开发微信框架
Jan 09 PHP
PHP异常处理Exception类
Dec 11 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
yii2 resetful 授权验证详解
May 18 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
Jan 29 PHP
PHP扩展mcrypt实现的AES加密功能示例
Jan 29 PHP
PHP里的$_GET数组介绍
Mar 22 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
Feb 23 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简单生成缩略图相册的方法
2015/07/29 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
传智播客学习之java 反射
2009/11/22 Javascript
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
Javascript中神奇的this
2016/01/20 Javascript
javascript事件模型介绍
2016/05/31 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
Python中new方法的详解
2019/01/15 Python
python中图像通道分离与合并实例
2020/01/17 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
linux面试题参考答案(3)
2012/09/13 面试题
企业行政文员岗位职责
2013/12/03 职场文书
高中数学教学反思
2014/01/30 职场文书
捐款倡议书范文
2014/02/02 职场文书
电话客服工作职责
2014/07/27 职场文书
演讲开场白台词大全
2015/05/29 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
七年级话题作文之执着
2019/11/19 职场文书