什么是 Laravel 合约?

Nat*_*ati 2 laravel laravel-5

我是 Laravel 的新手,我想了解它调用Contracts.
(如果我的问题没有到位,请告诉我原因,不要只是贬低它)。
因此,从我在 Laravel 文档中提到的以及在 Laracasts 视频中所说的内容来看,我明白合约只是类实现的接口。
那它有什么用呢?如果我或其他人将实现这些接口都需要通过接口,然后我根本不需要更改我的代码?
这就是 Laravel 将其实现用作合同的原因吗?我也想知道,要实现实现,我必须将实现绑定到合同?

Bri*_*laz 5

是的,我认为您的理解大部分是正确的。我会试着用一个例子来解释。假设你有一个PackageDeliveryServiceContract有一些方法,比如trackPackage, getShippingCost

您创建一个FedexDeliveryService以遵守合同并实施这些方法。

在您的控制器中,您可以直接注入PackageDeliveryServiceContract并开始使用它。(你熟悉 laravel 的依赖注入吗?)。

假设稍后您决定不再使用 Fedex 运送并改用 UPS。然后,您可以创建UPSDeliveryService也遵守该合同的内容。

现在,您需要做的就是将绑定从 更改为FedexDeliveryServiceUPSDeliveryService并且无需对控制器代码进行任何更改。

通常,您将在服务提供者内部创建契约和实现之间的绑定,例如 app/Providers/AppServiceProvider.php