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