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 相关文章推荐
PHP4实际应用经验篇(7)
Oct 09 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 PHP
php记录日志的实现代码
Aug 08 PHP
php上传图片客户端和服务器端实现方法
Mar 30 PHP
php获取本周星期一具体日期的方法
Apr 20 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
php 自定义错误日志实例详解
Nov 12 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
Laravel 实现密码重置功能
Feb 23 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 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
Thinkphp中Create方法深入探究
2014/06/16 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
理解Python中的With语句
2015/02/02 Python
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
python导入模块交叉引用的方法
2019/01/19 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
树莓派实现移动拍照
2019/06/22 Python
python如何保证输入键入数字的方法
2019/08/23 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
护理专科毕业自荐信范文
2014/04/21 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
庆七一宣传标语
2014/10/08 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android