W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
為你自己的應用程序或擴展包建立 facade 是很簡單的。你只需要 3 個東西:
一個服務容器綁定。
一個 facade 類。
一個 facade 別名配置。
讓我們來看個例子。這里有一個定義為 PaymentGateway\Payment 的類。
namespace PaymentGateway;
class Payment {
public function process()
{
//
}
}
我們需要可以從服務容器解析出這個類。所以,讓我們來加上一個綁定到服務提供者:
App::bind('payment', function()
{
return new \PaymentGateway\Payment;
});
注冊這個綁定的好方式是建立新的 服務提供者 命名為 PaymentServiceProvider,并把這個綁定加到 register 方法。然后你可以配置 Laravel 從 config/app.php 配置文件加載你的服務提供者。
接下來,我們可以建立我們自己的 facade 類:
use Illuminate\Support\Facades\Facade;
class Payment extends Facade {
protected static function getFacadeAccessor() { return 'payment'; }
}
最后,如果我們希望,可以在 config/app.php 配置文件為 facade 加個別名到 aliases 數(shù)組。現(xiàn)在我們可以在 Payment 類的實例上調(diào)用 process 方法。
Payment::process();
在 aliases 數(shù)組中的類在某些實例中不能使用,因為 PHP 將不會嘗試去自動加載未定義的類型提示類。如果 \ServiceWrapper\ApiTimeoutException 命別名為 ApiTimeoutException,即便有異常被拋出,在 \ServiceWrapper 命名空間外面的 catch(ApiTimeoutException $e) 將永遠捕捉不到異常。類似的問題在有類型提示的別名類一樣會發(fā)生。唯一的替代方案就是放棄別名并用 use 在每一個文件的最上面引入你希望類型提示的類。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: