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 相关文章推荐
删除无限级目录与文件代码共享
Jul 12 PHP
PHP 中的类
Oct 09 PHP
配置PHP使之能同时支持GIF和JPEG
Oct 09 PHP
php header()函数使用说明
Jul 10 PHP
input file获得文件根目录简单实现
Apr 26 PHP
一个PHP的远程图片抓取函数分享
Sep 25 PHP
php数组删除元素示例
Mar 21 PHP
php解析http获取的json字符串变量总是空白null
Mar 02 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
php集成动态口令认证
Jul 21 PHP
php使用ftp实现文件上传与下载功能
Jul 21 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
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
jQuery制作可自定义大小的拼图游戏
2015/03/30 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
python判断字符串是否包含子字符串的方法
2015/03/24 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
python实现用户管理系统
2018/01/10 Python
django框架cookie和session用法实例详解
2019/12/10 Python
python 简单的调用有道翻译
2020/11/25 Python
浅析python连接数据库的重要事项
2021/02/22 Python
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
餐饮业会计岗位职责
2013/12/19 职场文书
大学生最新职业生涯规划书范文
2014/01/12 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
维稳工作承诺书
2015/01/20 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
SQL基础的查询语句
2021/11/11 MySQL