php 在Laravel中使用的立面是什么?

ac1kyiln  于 2023-01-19  发布在  PHP
关注(0)|答案(3)|浏览(117)

我对Laravel提供的外观感到困惑。
Laravel documentation声明:
Facade为应用程序的service container中可用的类提供了一个“静态”接口。Laravel随附了许多Facade,这些Facade提供了对Laravel几乎所有特性的访问。Laravel Facade作为服务容器中底层类的“静态代理”,提供了简洁、表达性语法的好处,同时保持了比传统静态方法更多的可测试性和灵活性。
请帮助我理解:
1.我们为什么要使用use Illuminate\Support\Facades
1.如何创建自定义立面?

n6lpvg4x

n6lpvg4x1#

支持SitePoint分享关于Laravel立面的信息丰富和有用的知识。

facade模式是一种软件设计模式,常用于面向对象编程。
Facade是一个类,它 Package 了一个复杂的库,为它提供了一个更简单、更可读的接口。

拉拉维尔的门面

Facade为应用程序的服务容器中可用的类提供了一个“静态”接口。Laravel随附了许多Facade,这些Facade提供了对Laravel几乎所有特性的访问。Laravel Facade作为服务容器中底层类的“静态代理”,提供了简洁、表达性语法的好处,同时保持了比传统静态方法更多的可测试性和灵活性。

如何在Laravel实施立面

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

<?php

App::make('some_service')->methodName();

在Laravel中,所有服务都有一个facade类。这些facade类扩展了Illuminate/Support包中的基本Facade类。它们唯一需要实现的是getFacadeAccessor方法,该方法返回容器中的服务名称。

yhxst69z

yhxst69z2#

一般来说,立面(发音为/fəˈs ːd/)是建筑物或任何东西的外部和正面。立面的重要性在于它们容易被注意到并且更加突出,类似地,在laravel中也有立面的概念。它用于管理我们的代码可读性,并通过它构建易于记忆的函数和类的语法。
Laravel facade是一个类,它为服务容器中的服务提供了一个类似静态的接口。它们充当了访问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'));
});

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

zhte4eai

zhte4eai3#

通过这个例子你可以理解

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

在本例中,DB是facade。它调用DB facade上的table()静态方法。

相关问题