2017-01-03 36 views
2

我是Laravel新手&我想知道它的一些功能,請致電Contracts
(如果我的問題沒有到位,請告訴我爲什麼,不要只是低估它)。
因此,從我在Laravel文檔中發表的看法以及在Laracasts視頻中說出的內容,我明白了他們只是類實現的接口。
那麼它有什麼好處呢?如果我或其他人將實現這些接口都需要通過接口,然後我根本不需要改變我的代碼?
這就是爲什麼Laravel將它的實現用作合同的原因嗎? 另外我想知道,爲了實現實現,我必須將實現綁定到合同上?什麼是Laravel合同?

回答

2

是的,我認爲你的理解大多是正確的。我會嘗試用一個例子來解釋。假設您有一個PackageDeliveryServiceContract,它有一些方法,如trackPackage,getShippingCost

您創建FedexDeliveryService以遵守合同並實施這些方法。

在您的控制器中,您可以注入PackageDeliveryServiceContract並立即開始使用它。 (你熟悉laravel的依賴注入嗎?)。

比方說,稍後你決定你不再想使用Fedex並使用UPS代替。然後,您可以創建UPSDeliveryService,這也符合該合同。

現在,您需要做的就是將您的綁定從FedexDeliveryService更改爲UPSDeliveryService,並且不需要對控制器代碼進行任何更改。

通常,您將在服務提供商內部創建合同和實施之間的綁定,例如app/Providers/AppServiceProvider.php