Rumah > php教程 > PHP开发 > laravel5创建service provider和facade的方法详解

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

高洛峰
Lepaskan: 2016-12-23 17:24:17
asal
1629 orang telah melayarinya

本文实例讲述了laravel5创建service provider和facade的方法。分享给大家供大家参考,具体如下:

laravel5创建一个facade,可以将某个service注册个门面,这样,使用的时候就不需要麻烦地use 了。文章用一个例子说明怎么创建service provider和 facade。

目标

我希望我创建一个AjaxResponse的facade,这样能直接在controller中这样使用:

class MechanicController extends Controller {
  public function getIndex()
  {
    \AjaxResponse::success();
  }
}
Salin selepas log masuk

它的作用就是规范返回的格式为

{
  code: "0"
  result: {
  }
}
Salin selepas log masuk

步骤

创建Service类

在app/Services文件夹中创建类

<?php namespace App\Services;
class AjaxResponse {
  protected function ajaxResponse($code, $message, $data = null)
  {
    $out = [
      &#39;code&#39; => $code,
      &#39;message&#39; => $message,
    ];
    if ($data !== null) {
      $out[&#39;result&#39;] = $data;
    }
    return response()->json($out);
  }
  public function success($data = null)
  {
    $code = ResultCode::Success;
    return $this->ajaxResponse(0, &#39;&#39;, $data);
  }
  public function fail($message, $extra = [])
  {
    return $this->ajaxResponse(1, $message, $extra);
  }
}
Salin selepas log masuk

这个AjaxResponse是具体的实现类,下面我们要为这个类做一个provider

创建provider

在app/Providers文件夹中创建类

<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AjaxResponseServiceProvider extends ServiceProvider {
  public function register()
  {
    $this->app->singleton(&#39;AjaxResponseService&#39;, function () {
      return new \App\Services\AjaxResponse();
    });
  }
}
Salin selepas log masuk

这里我们在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 &#39;AjaxResponseService&#39;; }
}
Salin selepas log masuk

修改配置文件

好了,下面我们只需要到app.php中挂载上这两个东东就可以了

<?php
return [
  ...
  &#39;providers&#39; => [
    ...
    &#39;App\Providers\RouteServiceProvider&#39;,
    &#39;App\Providers\AjaxResponseServiceProvider&#39;,
  ],
  &#39;aliases&#39; => [
    ...
    &#39;Validator&#39; => &#39;Illuminate\Support\Facades\Validator&#39;,
    &#39;View&#39;   => &#39;Illuminate\Support\Facades\View&#39;,
    &#39;AjaxResponse&#39; => &#39;App\Facades\AjaxResponseFacade&#39;,
  ],
];
Salin selepas log masuk

   

总结

laravel5中使用facade还是较为容易的,基本和4没啥区别。

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

更多laravel5创建service provider和facade的方法详解相关文章请关注PHP中文网!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan