跳转到主要内容
约 2 分钟阅读

门面模式 (Facades)

Facades 为应用程序的服务容器中可用的类提供了一个“静态”代理接口。Laravel 自带了许多 Facade,几乎覆盖了框架的全部功能。

常见 Facade 使用示例

use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;

// 路由定义
Route::get('/users', [UserController::class, 'index']);

// 缓存存取
Cache::put('key', 'value', now()->addMinutes(10));
$value = Cache::get('key');

// 发起 HTTP 请求
$response = Http::get('https://api.github.com/users/laravel');

// 数据库事务
DB::transaction(function () {
    // 自动提交或回滚
});

Facades 是如何工作的?

每一个 Facade 类都继承自 Illuminate\Support\Facades\Facade,并实现 getFacadeAccessor() 方法。该方法返回服务容器中的绑定标识字符串(如 cachedb),通过魔术方法 __callStatic 代理到容器中的真实对象实例。