Laravel 中的契约是指框架提供的一系列定义核心服务的接口。 例如,Illuminate\Contracts\Queue\Queue 契约定义了队列任务需要实现的方法,Illuminate\Contracts\Mail\Mailer 契约定义了发送邮件所需要实现的方法。
每一个契约都有框架提供的相应实现。例如,Laravel 为队列提供了多个驱动的实现,邮件则由 SwiftMailer 驱动实现 。
所有 Laravel 契约都有其对应的GitHub库,这为所有有效的契约提供了快速入门指南,同时也可以作为独立、解耦的包被包开发者使用。
契约(Contracts) Vs. 门面(Facades)
Laravel 门面为 Laravel 服务的使用提供了便捷方式——不再需要从服务容器中类型提示和契约解析即可直接通过静态门面调用。
不同于门面不需要再构造器中进行类型提示,契约允许你在类中定义显式的依赖。有些开发者喜欢门面带来的便捷,也有些开发者倾向于使用契约,他们喜欢定义明确的依赖。