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中获得视频时间总长度的另一种方法
Sep 15 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
PHP实现服务器状态监控的方法
Dec 09 PHP
PHP连接access数据库
Mar 27 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
ThinkPHP表单数据智能写入create方法实例分析
Sep 27 PHP
php创建无限级树型菜单
Nov 05 PHP
php实现mysql数据库连接操作及用户管理
Nov 08 PHP
yii2中dropDownList实现二级和三级联动写法
Apr 26 PHP
详解php命令注入攻击
Apr 06 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 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实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php自定义错误处理用法实例
2015/03/20 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
8个必备的PHP功能开发
2015/10/02 PHP
php中strtotime函数性能分析
2016/11/20 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
python写入已存在的excel数据实例
2018/05/03 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
详解Python yaml模块
2020/09/23 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
函授本科毕业自我鉴定
2013/10/09 职场文书
资产经营总监岗位职责
2013/12/04 职场文书
住房公积金接收函
2014/01/09 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
装修安全责任协议书
2016/03/22 职场文书
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL