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简介
Oct 09 PHP
生成静态页面的PHP类
Nov 25 PHP
php 数组二分法查找函数代码
Feb 16 PHP
PHP 八种基本的数据类型小结
Jun 01 PHP
php实现singleton()单例模式实例
Nov 06 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
win平台安装配置Nginx+php+mysql 环境
Jan 12 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
PHP设计模式之装饰器模式定义与用法详解
Apr 02 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 PHP
PHP中关于php.ini参数优化详解
Feb 28 PHP
详解phpstorm2020最新破解方法
Sep 17 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
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
深入浅析python的第三方库pandas
2020/02/13 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
操行评语大全
2014/04/30 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
运动会广播稿200字
2015/08/19 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers