前言
推荐参照官方文档一起看:https://www.kancloud.cn/manual/thinkphp6_0/1037491
系统已经为大部分核心类库定义了 Facade(门面)
,当然我们也可以为自己的类库添加静态代理。
下面,我们一步步手工来创建一个自己的静态调用类库。
一、编写类库
这里的类库可以是自己编写的,当然也可以是第三方的轮子。
首先,我们在 app/
目录下创建一个 common
公共类库文件夹,并创建 Demo.php
:
然后打开 Demo.php
文件,编写自己的类库功能代码(这里随便写点):
<?phpnamespace app\common;class Demo{public function index(){return ':)';}}
二、继承 Facade
编写好自己的类库后,需要继承系统提供的门面类(Facade)才能实现静态调用。
首先,我们在 app\
目录下创建一个 facade
目录(用于生成静态调用),并创建 Demo.php
:
然后打开 Demo.php
文件,写入以下代码:
<?phpnamespace app\facade;## 调用系统Facade管理类## 只要继承它便可实现自定义类库静态调用use think\Facade;/** * 为Demo类库添加静态代理 * @return String */class Demo extends Facade{ // getFacadeClass: 获取当前Facade对应类名protected static function getFacadeClass(){ // 返回当前类代理的类return 'app\common\Demo';}}
三、验证结果
随便创建一个控制器,我们来验证一下能否 静态调用 Demo
类中的动态方法:
<?phpnamespace app\controller;## 调用被代理类库(Demo)use app\facade\Demo;class Index{public function index(){// 尝试调用return Demo::index();}}
成功。
写在后面
推荐您遵循 Thinkphp 开发命名规范。
以上这些文件夹的建立以及文件命名,都是可以随意的,但要注意命名空间!