2.5 门面模式

 知识梳理

复制代码
1 在依赖注入的时候使用动态类 不要使用门面模式

2 依赖注入和门面代理大部分情况下是一样的,都是从容器里获取对象实例。

3 依赖注入的优势是支持接口注入,而 facade 则无法完成

4 一定要注意 use 引入类库的区别
依赖注入: use think\Route;
门面模式: use think\facade\Route;
复制代码

 

 

自己实践一下

1)创建动态类

<?php
namespace app\admin\controller;
class News
{
public function hello(){
return '我是新闻页的hello';
}
}

2)创建对应的门面类

复制代码
在admin目录下 新建 facade 目录
<?php
namespace app\admin\facade;
use think\facade;

class News extends facade
{
    //获取当前Facade对应类名(或者已经绑定的容器对象标识)
    public static function getFacadeClass(){
        return '\app\admin\controller\News'; //没有使用容器标识
        return 'news'; //使用容器标识
    }
}

该类就做了一件是 重写父类的 getFacadeClass()静态方法
把自己的动态类名 return 出去
复制代码

3)调用自己定义的门面类

复制代码
<?php
namespace app\admin\controller;
use app\admin\facade\News;

class Index
{
    public function hello(){
       return News::hello();
    }
}

http://www.blog.com/admin/index/hello 访问成功
复制代码

 

门面的执行流程

 

posted @   棉花糖88  阅读(86)  评论(0)    收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示