Laravel 中的契约是指框架提供的一系列定义核心服务的接口(interface)
Contracts其实和Facades差不多,底层调用的都是一样的
契约和门面的对比
Laravel Facades 和辅助函数提供了一种使用 Laravel 服务的简单方法,即不需要通过类型提示并从服务容器中解析契约。在大多数情况下,每个 Facades 都有一个等效的契约。
不同于门面不需要在构造函数中进行类型提示,契约允许你在类中定义显式的依赖。一些开发者倾向于以契约这种方式明确地定义它们的依赖项,而其它开发者则更喜欢 Facades 带来的便捷。
对于大多数应用程序来说,不管是使用门面还是契约都可以。但是,如果你正在构建一个扩展包,为了方便测试,你应该强烈考虑契约。
laravel中使用契约
Route::get('/contracts', function (Illuminate\Contracts\Cache\Factory $cache) {
$cache->put(['name' => 'tom'], 1000);
return $cache->get('name');
});