總結:
facade沒有你想的那麼高大上,就拿下面的這個案例使用白花文解釋
1.咱們第一步確定是建立一個facade的一個代理類WeinxinUtilFacade繼承facade
2.在common裏邊註冊核心類庫靜態代理(其實就是給實際類起別名),實例化實際類的時候,直接實例化代理類便可
3.就以下案例,自己是直接use app\util\WeixinUtil。而後實例化調用check方法便可
4.可是使用facade後,就變成了使用use app\facade\WeixinUtilFacade(在common裏邊不是已經將app\util\WeixinUtil從新命名給了app\facade\WeixinUtilFacade,因此在這裏也是能夠直接check方法,實際仍是實際類的方法)
Loader 是爲了註冊類庫別名使用的
左邊是facade的別名,右邊是facade的代理類(下拉看解釋)
1.首先咱們仍是建立一個WeixinUtilFacade這個類php
2.註冊核心類庫的靜態代理,app
這段代碼是facade代理類,右邊是實際類,也能夠理解爲左邊是右邊的別名,實例化左邊的這個類,也能夠直接調用左邊類的方法spa
// 應用公共文件 use think\Facade; use think\Loader; // 註冊核心類庫的靜態代理 Facade::bind([ // 就是facade的代理類=>實際類 \app\facade\WeixinUtilFacade::class=>\app\util\WeixinUtil::class, ]);
3.在Weixin.php token的驗證代理
直接實例化代理類,而後調用方法便可,這裏靜態調用的其實就是util類的checkcode
<?php namespace app\index\controller; use think\Controller; use Request; use Log; use app\facade\WeixinUtilFacade; use app\util\WeixinUtil; class Weixin extends Controller { /** * 顯示資源列表 * * @return \think\Response */ public function index() { // return 123; return WeixinUtilFacade::check(); // $WeixinUtil = new WeixinUtil(); // return $WeixinUtil->check(); } }
4.WeixinUtil這個類繼承
Loader 是爲了註冊類庫別名使用的token
在common裏邊註冊核心類庫靜態代理時,也能夠對註冊的靜態類庫進行起別名資源
用法也就很簡單了,左邊是起的別名,右邊便是註冊的核心類庫靜態代理名(也就是靜態代理)io