2017-01-03 3 views
2

Ich bin neu in Laravel & Ich wollte etwas über seine Funktion wissen, die Contracts ruft.
(Wenn meine Frage nicht an Ort und Stelle ist, lassen Sie mich wissen, warum, und nicht nur downvote).
Also, was ich in Laravel Dokumentation rot und sagen auf Laracasts Videos habe ich verstanden, dass Verträge sie nur Schnittstellen für die Klassenimplementierung sind.
Für was ist es gut? Dass, wenn ich oder jemand anderes diese Schnittstellen implementiert, alle über die Schnittstelle gehen müssen und dann muss ich meinen Code überhaupt nicht ändern?
Ist das der Grund, warum Laravel seine Implementierung als Vertrag verwendet? Auch ich wollte wissen, um die Implementierung zu erreichen, muss ich die Implementierung an einen Vertrag binden?Was genau sind Laravel Contracts?

Antwort

2

Ja, ich denke, Ihr Verständnis ist größtenteils richtig. Ich werde versuchen, es mit einem Beispiel zu erklären. Nehmen wir an, Sie haben eine PackageDeliveryServiceContract, die einige Methoden wie trackPackage, getShippingCost hat.

Sie erstellen eine FedexDeliveryService, um den Vertrag einzuhalten und diese Methoden zu implementieren.

In Ihrem Controller können Sie einfach PackageDeliveryServiceContract injizieren und sofort damit beginnen. (Kennen Sie die Abhängigkeitsinjektion von Laravel?).

Nehmen wir an, Sie entscheiden später, dass Sie nicht mehr mit Fedex versenden und stattdessen UPS verwenden möchten. Dann können Sie UPSDeliveryService erstellen, das auch diesem Vertrag entspricht.

Jetzt müssen Sie nur Ihre Bindung von FedexDeliveryService zu UPSDeliveryService ändern, und Sie müssen keine Änderungen an Ihrem Controller-Code vornehmen.

Normalerweise erstellen Sie die Bindung zwischen Vertrag und Implementierung in einem Service Provider wie app/Providers/AppServiceProvider.php

Verwandte Themen