Laravel 創(chuàng)建Facade

首先,需要?jiǎng)?chuàng)建一個(gè)類來集成Facade類

<?php

namespace App\Facades\GeoIP\Facade;

use Illuminate\Support\Facades\Facade;

class GeoIP extends Facade

{

? ? protected static function getFacadeAccessor()

? ? {

? ? ? ? return 'geoip';

? ? }

}

其次需要注冊(cè)服務(wù),我們可以通過php artisan來創(chuàng)建,也可以在app\providers創(chuàng)建。app/Providers/FacadesServiceProvider.php 代碼如下:

<?php

namespace App\Providers;

use App\Service\ApiService;

use Illuminate\Support\ServiceProvider;

// include the class facade binded

use App\Facades\GeoIP\GeoIP;

class FacadesServiceProvider extends ServiceProvider

{

? ? /**

? ? * 在容器中注冊(cè)綁定。

? ? *

? ? * @return void

? ? */

? ? public function register()

? ? {

? ? ? ? $this->app->singleton('geoip', function ($app) {

? ? ? ? ? ? return new GeoIP($app);

? ? ? ? });

? ? }

}

上面代碼可知,服務(wù)提供者注冊(cè)時(shí)會(huì)注冊(cè)一個(gè)單例,標(biāo)號(hào)為 'geoip',也就是我們自己的 facade 返回的那個(gè),然后回調(diào)函數(shù)會(huì)返回一個(gè)對(duì)象,也就是我們封裝 geoip 功能的那個(gè)類的實(shí)例,不明白的同學(xué)可以看看 laravel 的服務(wù)提供者和服務(wù)容器相關(guān)知識(shí)哦。(注意要 use 將 facade 和封裝類的命名空間引用一下哦)。

在config\app.php中找到providers和aliases將provider和Facade命名配置一下

在providers中加入

App\Providers\FacadeServiceProvider::class,

在aliases中加入

'GeoIP' => App\Facades\GeoIP\Facade\GeoIP::class,


注冊(cè)完畢后,每次使用 facade::function 的時(shí)候,laravel 會(huì)自動(dòng)解析 facade, 然后創(chuàng)建一個(gè)對(duì)象給用戶使用,,而無需用戶自己去 new 一個(gè)對(duì)象出來

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 我們,都老了吧! -- -- 題記 二十六歲的唐不甜一口氣跑了好幾家藥店買了好多安眠藥,然后去取了幾天前訂...
    是孔乙己亦是祥林嫂閱讀 351評(píng)論 0 4
  • 除了你張口就能來的“馬斯洛”“七宗罪”,需求分析還該從哪些方面入手?本文作者將從橫向分類與縱向剖析兩大方面,帶你認(rèn)...
    精選閱讀 565評(píng)論 0 0
  • 母女間的羈絆 妹妹電話里說,她元旦還是決定回家去,因?yàn)橹雷约涸趯W(xué)校也不會(huì)一直復(fù)習(xí)考試。 我說,回去家里待著也沒什...
    萍梗子閱讀 358評(píng)論 1 4
  • 數(shù)據(jù)預(yù)處理時(shí)用pandas 做了一個(gè)科比的投籃預(yù)測(cè),數(shù)據(jù)集在kaggle上可以找到,我們對(duì)flag(投中與否)進(jìn)行...
    易云邪閱讀 625評(píng)論 0 1

友情鏈接更多精彩內(nèi)容