Facade静态代理

社会主义新天地 提交于 2020-02-03 01:34:52
<?php
namespace app\index\controller;
//use \app\facade\Test;

class Demo2
{
    public function index($name = 'ThinkPHP')
    {
        //对象方式访问hello方法
//        $test = new \app\common\Test;
//        return  $test->hello($name);

   /**
    * 如果想静态调用一个动态方法,需要给当前的类绑定一个静态代理的类
    *如果没有在静态代理类中显示指定要绑定的类名,就需要动态显示绑定一下
    * \think\Facade::bind()
    */
            \think\Facade::bind('app\facade\Test','\app\common\Test');
        //    实际上访问路径为    \app\facade\Test::hello('Peter Zhu');
            return Test::hello('Peter Zhu');
    }
}

在这里插入图片描述
名字建议和代理类相同

<?php
namespace app\facade;

//app\facade\Test 代理了 app\common\Test
class Test extends \think\Facade
{
    //代理app\common\Test 这个类
//    protected static function getFacadeClass()
//    {
//        return 'app\common\Test';
//    }

}

在这里插入图片描述
代理类

<?php
namespace app\common;

class Test
{
    public function hello($name)
    {
        return 'Hello'.$name;
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!