Laravel使用的Facades是什么?

Ama*_*mar 3 php facade laravel-5 laravel-facade

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

Laravel文档状态:

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

请帮我理解:

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

Ama*_*mar 7

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

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

门面模式

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

如何在Laravel中实施外墙

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

<?php

App::make('some_service')->methodName();
Run Code Online (Sandbox Code Playgroud)

在Laravel,所有服务都有门面课程.这些Facade类扩展了基础Facade类,它是Illuminate/Support包的一部分.他们唯一需要实现的是getFacadeAccessor方法,该方法返回容器内的服务名称.


小智 6

一般而言,立面(发音为 /f??s??d/)是建筑物或任何事物的外部和正面。Facades 的重要性在于它们容易被注意到并且更加突出,同样在 laravel 中也有 Facades 的概念。它们用于管理我们的代码可读性并通过它构建易于记忆的函数和类的语法。

Laravel 门面是一个类,它为服务容器内的服务提供类静态接口。它们充当访问 Laravel 服务的底层实现的代理。例如在web.php文件中写下面的代码

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

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

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

你不觉得上面的例子更优雅,语法更容易记住,对吗?这就是外墙的美。