2017-01-03 34 views
2

我是Laravel新手&我想知道它的一些功能,请致电Contracts
(如果我的问题没有到位,请告诉我为什么,不要只是低估它)。
因此,从我在Laravel文档中发表的看法以及在Laracasts视频中说出的内容,我明白了他们只是类实现的接口。
那么它有什么好处呢?如果我或其他人将实现这些接口都需要通过接口,然后我根本不需要改变我的代码?
这就是为什么Laravel将它的实现用作合同的原因吗? 另外我想知道,为了实现实现,我必须将实现绑定到合同上?什么是Laravel合同?

回答

2

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

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

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

比方说,稍后你决定你不再想使用Fedex并使用UPS代替。然后,您可以创建UPSDeliveryService,这也符合该合同。

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

通常,您将在服务提供商内部创建合同和实施之间的绑定,例如app/Providers/AppServiceProvider.php