laravel5如何创建service provider和facade

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没啥区别。

时间: 2024-11-03 14:14:36

laravel5如何创建service provider和facade的相关文章

laravel5创建service provider和facade的方法详解_php实例

本文实例讲述了laravel5创建service provider和facade的方法.分享给大家供大家参考,具体如下: laravel5创建一个facade,可以将某个service注册个门面,这样,使用的时候就不需要麻烦地use 了.文章用一个例子说明怎么创建service provider和 facade. 目标 我希望我创建一个AjaxResponse的facade,这样能直接在controller中这样使用: class MechanicController extends Contr

laravel5创建service provider和facade的方法详解

本文实例讲述了laravel5创建service provider和facade的方法.分享给大家供大家参考,具体如下: laravel5创建一个facade,可以将某个service注册个门面,这样,使用的时候就不需要麻烦地use 了.文章用一个例子说明怎么创建service provider和 facade. 目标 我希望我创建一个AjaxResponse的facade,这样能直接在controller中这样使用: class MechanicController extends Contr

Laravel 创建 Service Provider 测试实例

1.定义服务类 有了上一节有关服务容器的讲述,理解起服务提供者来很简单.我们这里先定义一个绑定到容器的测试类TestService,为了对类的定义加以约束,我们同时还定义一个契约接口TestContract. 定义TestContract如下: <?php namespace App\Contracts; interface TestContract {     public function callMe($controller); } 定义TestService如下: <?php name

angularjs中factory,service,provider 自定义服务的不同

一,factory,service,provider自定义服务,services.js  代码如下 复制代码 'use strict'; /* Services */ var phonecatServices = angular.module('phonecatServices', []); phonecatServices.factory('facetorytest', ['$window',         //factory方式     function($window){        

java-ecplise没法创建service类

问题描述 ecplise没法创建service类 5C new里面没有service,other里面也没有直接写一个类的话,自己extends service出错,然后import android.service也出错 解决方案 其他的类如Activity可以创建吗? 解决方案二: service 是接口吧?new interface 解决方案三: service是自己定义的,定义接口interface,实现时继承 解决方案四: public class TestService extends

WCF后续之旅(10) 通过WCF Extension实现以对象池的方式创建Service Instance

我们知道WCF有3种典型的对service instance进行实例化的方式,他们分别与WCF的三种InstanceContextMode相匹配,他们分别是PerCall,PerSession和Single.PerCall为每次service invocation创建一个新的service instance; 而PerSession则让一个service instance处理来自通过各Session(一般是同一个proxy对象)的调用请求:而Single则是用同一个service instanc

jar包的service Provider机制

The META-INF directory The following files/directories in the META-INF directory are recognized and interpreted by the Java 2 Platform to configure applications, extensions, class loaders and services: MANIFEST.MF The manifest file that is used to de

创建一个Windows Service应用程序

window|程序|创建 创建一个Windows Service应用程序-------------------------------------------------------------------------------- 下载本文代码见资源 正是由于.NET Framework的出现,才使你能够构建出在系统重新启动时自动运行的.无人参与的(unattended)应用程序.by Stan Schultes技术工具箱:VB.NET, XML, ASPWindows service应用程序

利用Geronimo 2.2创建安全的Web Service应用

随着 Web Service 应用越来越广泛, 如何保证服务能够安全的访问和传输,也逐渐引起开发人员和用户的关注.Web Service 的安全可以从两方面考虑:访问安全和传输安全 ..前者主要指只有授权用户可以访问应用, 而后者侧重于在消息传输过程中如何保证消息的私密性和完整性.本文介绍了如何在 Apache Geronimo 开发和部署安全的 Web Service 应用,以确保信息交互的安全,将侧重介绍如何基于 HTTP/HTTPS 协议保护 Web Service 应用访问和传输的安全.