Facade在Laravel中的工作机制
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们知道Facade门面模式是一个中介类,对子系统或者类对象进行封装和代理,为子系统的一组接口提供一个统一的高层接口。它对外暴露子系统的功能,但是不暴露子系统对象,用户要使用子系统的某个功能(方法)时,先调用门店,由于门店代理了子系统,所以委托子系统去处理相应的功能请求,从而达到将用户和子系统解耦的目的,用户只需要和门店打交道,不需要知道所有的子系统及其内部构造。 我们接下来通过在Laravel中最常用的DB-Facade,来看看Facade在Laravel中是如何工作的。 1,代码如下 <?php use Exception; use Illuminate\Support\Facades\DB; Class A { function a() { try { DB::beginTransaction(); //do something DB::commit(); } catch (Exception $e) { DB::rollback(); // handle exception } } } 这里,我们看到use了一个DB的Facades,为什么写了DB两个字母,就会自动use DB的Facade呢?这就涉及到 Laravel的自动加载和依赖注入机制,这里略过。 我们来看看这个类文件的代码: 2, DB