您的位置:首页 > 编程语言 > PHP开发

对laravel5概念的理解 -- 门面模式(Facade)

2016-07-07 17:26 387 查看
前言:

第一次写技术类博客,因为比较懒,至于作为一个懒人为何会写博客,因为记性比较差,常常当初灵光一闪理解的概念最后会忘记。所以还是用文字记录下来,以备自己后查,有缘人看到也可以做个参考,不同意见欢迎指正。不过主要问题是,我表达能力不好,有缘人还得看得懂,恩,必须是有缘人中的有缘人。

为什么写laravel呢,这框架真心牛逼,组件化的优势不提,我主要是用它来学习下PHP设计模式的应用。

OK.废话很多,总算说完了,进入正题。

门面模式

理解3个概念:

1)container的概念,laravel所有的服务都注册在container里面,至于如何注册,就是使用service provider

2)service provider是用来绑定具体使用的服务,比如用mysql数据库,还是redis数据库,然后使用$this->app->bind进行绑定,以此实现松耦合,切换数据库比较方便。

3)facade用来提供统一的接口,比如无论你用哪种cache,redis还是memcache,客户端都可以用cache::get()方式来获取value,至于具体是用了redis还是memcahe,就看你在sevice provider里面绑定了哪个。cache::get()的实现方式是,继承Facade方法getFacadeAccessor,返回你在容器中绑定的key值,比如cache,然后Facade类会使用php魔术变量__callstatic(),callstatic的逻辑里面会从container里解析cache所绑定的服务,就是前面提到的service
provider绑定了谁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息