约 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() 方法。该方法返回服务容器中的绑定标识字符串(如 cache、db),通过魔术方法 __callStatic 代理到容器中的真实对象实例。