什么是Laravel合同?

时间:2017-01-03 14:37:22

标签: laravel laravel-5

我是Laravel&的新手。我想了解一下调用Contracts的功能 (如果我的问题没有到位,请告诉我原因,不要只是将其投票。) 因此,根据Laravel文档中的红色内容以及对Laracasts视频的说法,我理解合同它们只是类实现的接口。
那对它有什么好处?如果我或其他人将实现这些接口将需要通过接口,然后我根本不需要更改我的代码?
这就是Laravel将其作为合同实施的原因吗? 另外我想知道,为了实现我必须将实现绑定到合同?

1 个答案:

答案 0 :(得分:4)

是的,我认为您的理解大多是正确的。我将尝试用一个例子来解释。假设您有一个PackageDeliveryServiceContract,其中包含trackPackagegetShippingCost等方法。

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

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

我们稍后会说您决定不再使用Fedex并使用UPS代替。然后,您可以创建也符合该合同的UPSDeliveryService

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

通常,您将在服务提供程序(如app/Providers/AppServiceProvider.php

)内创建合同与实现之间的绑定