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

前言:


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

你可能感兴趣的:(PHP)