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 如何向 MySQL 发送数据
Oct 09 PHP
上传多个文件的PHP脚本
Nov 26 PHP
php google或baidu分页代码
Nov 26 PHP
php 字符串函数收集
Mar 29 PHP
php url路由入门实例
Apr 23 PHP
Yii配置文件用法详解
Dec 04 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 PHP
php获取当前页面完整URL地址
Dec 30 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
Laravel框架集合用法实例浅析
May 14 PHP
PHP实现页面静态化深入讲解
Mar 04 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
原生js 秒表实现代码
2012/07/24 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
js删除数组元素、清空数组的简单方法(必看)
2016/07/27 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
Python的装饰器使用详解
2017/06/26 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
Python语法分析之字符串格式化
2019/06/13 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
实习期自我鉴定
2013/10/11 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
指导教师评语
2014/04/26 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
求职导师推荐信范文
2015/03/27 职场文书
资产移交协议书
2016/03/24 职场文书
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL