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实现的在线人员函数库
Apr 09 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 PHP
php中preg_replace_callback函数简单用法示例
Jul 21 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
php app支付宝回调(异步通知)详解
Jul 25 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摘要生成函数(无乱码)
2012/02/04 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
详解package.json版本号规则
2019/08/01 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
大学毕业生管理学求职信
2014/09/01 职场文书
办理房产证委托书
2014/09/18 职场文书
2015年档案室工作总结
2015/05/23 职场文书
务工证明怎么写
2015/06/18 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python