2017-01-03 5 views
2

私はLaravelを初めて利用しました&私はそれがContractsを呼び出す機能について何か知りたいと思っていました。
(私の質問が適切でない場合は、理由を知ってもらい、それをdownvoteしないでください)。
私はLaravelドキュメンテーションの赤い部分から、Laracastのビデオについて言うと、彼らは契約がクラス実装のためのインタフェースであることを理解しました。
それは何のために良いですか?もし私や他の誰かがそれらのインターフェースを実装するならば、すべてのインターフェースが必要になりますし、私のコードを変更する必要はありませんか?
Laravelが契約の実装を使用している理由はそれですか? また、実装を実現するために、実装を契約にバインドする必要があることを知りたいと思いますか?Laravel Contractsとは何ですか?

答えて

2

はい、あなたのご理解は大体正しいと思います。私は例を説明しようとします。例えば、PackageDeliveryServiceContracttrackPackagegetShippingCostなどのメソッドがあるとします。

FedexDeliveryServiceを作成して、契約に準拠し、それらのメソッドを実装します。

コントローラでは、PackageDeliveryServiceContractを注入してすぐに使用できます。 (あなたはlaravelの依存性注入に精通していますか?)

もう一度、フェデックスで出荷してUPSを使用する必要がなくなったとします。その契約にも従ってUPSDeliveryServiceを作成することができます。

バインドをFedexDeliveryServiceからUPSDeliveryServiceに変更するだけで、コントローラコードを変更する必要はありません。

通常、サービスプロバイダ内の契約と実装の間のバインディングは、app/Providers/AppServiceProvider.php

などのように作成されます
関連する問題