总结:
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里边注册核心类库静态代理时,也可以对注册的静态类库进行起别名
用法也就很简单了,左边是起的别名,右边即是注册的核心类库静态代理名(也就是静态代理)