Lavarel中Facades的理解和使用

来源:互联网 发布:java项目开发心得体会 编辑:程序博客网 时间:2024/06/04 18:42

接着上一篇阐述Contracts的博文,这一篇来写一写我理解的Facades。


Facades 为应用程序的 服务容器 中可用的类提供了一个「静态」接口。说白了,就是让服务容器中的类用起来更方便些。

我理解的Facades在Lavarel结构中的位置,在上一篇本博文中已经上图说明,大家可点击参阅。下面写一些怎么使用Facades。


第一步,写一个类继承Facade:

<?phpnamespace App\Facades;use Illuminate\Support\Facades\Facade;class Hello extends Facade{    protected static function getFacadeAccessor()    {        return 'Hello';    }}

这里的return的”Hello”是上一篇博文中,Contract接口的别名。通过这一步,这个Facade就与Contract联系起来了。

第二步,在Config\app.php中给它一个别名,在’aliases’ => []中加入这一行代码即可:

'FacadeHello'=>App\Facades\Hello::class,

第三步,可以使用了,在控制器中:

<?phpnamespace App\Http\Controllers;use FacadeHello;class DiaryController extends Controller{    /**     * Display a list of all of the user's diaries.     *     * @return Response     */    public function index(){        return view('diaries.index',[        'hello'=>FacadeHello::hello(),        ]);    }}

说明:

  1. 这里use的 FacadeHello 就是给这个Facade起的别名(当然不用别名也可以)。
  2. 通过FacadeHello就可以直接用Contract接口实现类中的方法了。

通过对Contracts和Facades的学习,我认为后者使用起来应该更方便一些。看中文社区说,使用Contracts可以进一步降低耦合度,这一点还不是想得很明白,请前辈指点。

另外,尊重版权,转载请注明出处,谢谢!

                                                        by:Vin
0 0