Facade 感覺像是提供一個靜態的介面,然後從這個介面去存取 IoC 裡的物件。用靜態的原因應該是 coding style 和 DI 兩個原因。
官方的說明實在是太抽象了,所以上網去找了別的資料,然後再整理起來
假設最後的實體 class 名叫: Member/Config
Step 1
建立一個類別 app/facades/Member/Config.php
namespace Member; |
這個檔案需要放在 Composer 知道該如何自動載入的目錄,因為目錄是自定義,所以要在 composer.json
加入自動載入的位置:
"autoload": { |
Step 2
建立 Facade class app/facades/Member/Facades/Config.php
,此 class 必須繼承 Illuminate\Support\Facades\Facade
,並要寫一個 protected static function getFacadeAccessor()
它回傳的 IoC 綁定的名稱。
namespace Member\Facades; |
Step 3
建立 ServiceProvider class app/facades/Member/ConfigServiceProvider.php
,需繼承 Illuminate\Support\ServiceProvider
。
namespace Member; |
在 app/config/app.php
註冊 ServiceProvider 與設定別名
'providers' => array( |
Step 4
到此為止就完成了,最後只要用下面程式碼就能執行第一個實體 class 了。
MemberConfig::getConfig(); |