总结:
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这个类
2.注册核心类库的静态代理,
这段代码是facade代理类,右边是实际类,也可以理解为左边是右边的别名,实例化左边的这个类,也可以直接调用左边类的方法
// 应用公共文件 use think\Facade; use think\Loader; // 注册核心类库的静态代理 Facade::bind([ // 就是facade的代理类=>实际类 \app\facade\WeixinUtilFacade::class=>\app\util\WeixinUtil::class, ]);
3.在Weixin.php token的验证
直接实例化代理类,然后调用方法即可,这里静态调用的其实就是util类的check
<?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 是为了注册类库别名使用的
在common里边注册核心类库静态代理时,也可以对注册的静态类库进行起别名
用法也就很简单了,左边是起的别名,右边即是注册的核心类库静态代理名(也就是静态代理)