# 静态代理 在 tp5.1,引入了 Facade 类,又叫门面类,如果想静态访问一个类中的动态方法,可以给这个类套一层静态马甲,实现静态访问,核心文件位于 `thinkphp/library/think/Facade.php` 。 系统的 `facade` 类位于 `thinkphp/library/think/facade` 中,系统封装的 facade 位于 `thinkphp/base.php` 文件中。 如果想静态调用一个动态方法,需要给当前的类绑定一个静态代理类。 例子同依赖注入中的Demo类,修改 Demo 类 : ```php <?php namespace app\common; class Demo { public function sayHello ($name = 'qzy') { return 'Hello ' . $name; } } ``` 创建一个 facade 管理目录 `application/facade` ,新建一个文件 `Demo.php` : `application/facade/Demo.php` ```php <?php namespace app\facade; class Demo extends \think\Facade { protected static function getFacadeClass() { return 'app\common\Demo'; } } ``` 这个文件中,继承了 Facade 类,通过重写父类方法 getFacadeClass() 进行代理,返回的是需要代理的类名。 在 index 控制器中加入方法 : `application/index/Index.php` ```php public function getMethodAsStatic () { return \app\facade\Demo::sayHello('xiaoyu'); } ``` 此时,访问 `http://www.my-tp5.com/index.php/index/index/getMethodAsStatic` 可以看到结果。