我是Laravel&的新手。我想了解一下调用Contracts
的功能
(如果我的问题没有到位,请告诉我原因,不要只是将其投票。)
因此,根据Laravel文档中的红色内容以及对Laracasts视频的说法,我理解合同它们只是类实现的接口。
那对它有什么好处?如果我或其他人将实现这些接口将需要通过接口,然后我根本不需要更改我的代码?
这就是Laravel将其作为合同实施的原因吗?
另外我想知道,为了实现我必须将实现绑定到合同?
答案 0 :(得分:4)
是的,我认为您的理解大多是正确的。我将尝试用一个例子来解释。假设您有一个PackageDeliveryServiceContract
,其中包含trackPackage
,getShippingCost
等方法。
您创建FedexDeliveryService
以遵守合同并实施这些方法。
在你的控制器中,你可以注入PackageDeliveryServiceContract
并立即开始使用它。 (你熟悉laravel的依赖注入吗?)。
我们稍后会说您决定不再使用Fedex并使用UPS代替。然后,您可以创建也符合该合同的UPSDeliveryService
。
现在,您需要做的就是将绑定从FedexDeliveryService
更改为UPSDeliveryService
,并且您无需对控制器代码进行任何更改。
通常,您将在服务提供程序(如app/Providers/AppServiceProvider.php