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 5.0创建图形的巧妙方法
Oct 12 PHP
smarty模板局部缓存方法使用示例
Jun 17 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
php中try catch捕获异常实例详解
Nov 21 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 PHP
php批量删除超链接的实现方法
Oct 19 PHP
PHP验证码生成原理和实现
Jan 24 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
yii使用bootstrap分页样式的实例
Jan 17 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
php面向对象的方法重载两种版本比较
2008/09/08 PHP
PHP生成UTF8文件的方法
2010/05/15 PHP
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
PHP反向代理类代码
2014/08/15 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
Expandable &quot;Detail&quot; Table Rows
2007/08/29 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
Node 模块原理与用法详解
2020/05/13 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
Python变量赋值的秘密分享
2018/04/03 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
Python单链表原理与实现方法详解
2020/02/22 Python
基于python检查矩阵计算结果
2020/05/21 Python
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
《画风》教学反思
2014/04/16 职场文书
如何写求职信
2014/05/24 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书