Laravel使用的Facades是什么?

时间:2017-02-14 10:41:27

标签: php laravel-5 facade laravel-facade

我对Laravel提供的Facades感到困惑。

Laravel documentation州:

  

外墙提供静电"与应用程序service container中可用的类的接口。 Laravel船上有许多外墙,可以使用几乎所有Laravel的功能。 Laravel外墙作为"静态代理"到服务容器中的底层类,提供简洁,富有表现力的语法,同时保持比传统静态方法更多的可测试性和灵活性。

请帮助我理解:

  1. 为什么我们真的使用use Illuminate\Support\Facades
  2. 如何创建自定义外墙?

3 个答案:

答案 0 :(得分:5)

感谢sitepoint分享有关FACADE(Laravel的FACADE)的信息和有用的知识

FACADE : - Facade模式是一种软件设计模式,通常用于面向对象的编程。事实上,Facade是一个包装复杂库的类,为它提供了一个更简单,更易读的接口。

Facade pattern

Laravel的外墙: - 外墙提供静电"与应用程序服务容器中可用的类的接口。 Laravel船上有许多外墙,可以使用几乎所有Laravel的功能。 Laravel外墙作为"静态代理"到服务容器中的底层类,提供简洁,富有表现力的语法,同时保持比传统静态方法更多的可测试性和灵活性。

如何在Laravel中实施外墙

您可能知道,容器内的每个服务都有一个唯一的名称。在Laravel应用程序中,要直接从容器访问服务,我们可以使用regexp_split_to_array()方法或app()辅助函数。

App::make()

在Laravel中,所有服务都有外观类。这些Facade类扩展了基础Facade类,它是<?php App::make('some_service')->methodName(); 包的一部分。他们唯一需要实现的是getFacadeAccessor方法,该方法返回容器内的服务名称。

答案 1 :(得分:3)

您可以通过此示例了解

DB::table('table_name')->get();  

在此示例中,DB是外观。它正在 DB外观上调用table()静态方法。

答案 2 :(得分:0)

总的来说,立面(发音为/ fəˈsɑːd /)是建筑物或任何事物的外部和正面。外墙的重要性在于它们易于发现且更加突出,类似地,laravel中也有外墙的概念。用来管理我们的代码可读性并通过它构建易于记忆的函数和类的语法。

Laravel门面是一个类,它为服务容器内的服务提供类似静态的接口。它们充当访问laravel服务基础实现的代理。例如,将以下代码写入web.php文件

//using redis cache
Route::get('/cache', function () {
    cache()->put('hello','world', 600);
    dd(cache()->get('hello')); //outputs world
});

上面的示例使用非静态方式调用缓存的方法,现在让我们看看如何使用缓存外观。

use Illuminate\Support\Facades\Cache;
//using redis cache
Route::get('/cache', function () {
    Cache::put('hello','world', 600);
    dd(Cache::get('hello'));
});

您不认为上面的示例更优雅并且语法容易记住,对吗?那就是外墙的美。

来源:decodeweb.in