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
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
- 1. Laravel 5 Auth - Was genau sind die Methoden?
- 2. Was genau sind "WPF-Dienste"?
- 3. Was genau sind C++ Module?
- 4. Was sind com.sec.android.provider. * Apps genau?
- 5. Was genau sind Cout/Cin?
- 6. Was genau sind serialisierte Klassendaten?
- 7. Was genau sind Strings in Nim?
- 8. Was genau sind contentOffset & contentInset von ScrollView
- 9. Was genau sind statische Konstruktoren in C#?
- 10. Was genau sind Verwaltungsredex nach CPS-Konvertierung?
- 11. Was genau sind Azure Website Instanz
- 12. Was genau sind Metadaten in SQLAlchemy?
- 13. Was genau sind LDFLAGS und CXXFLAGS?
- 14. Was genau sind GHC-Typ-Koerzitien?
- 15. Laravel/Private: Class Laravel \ Socialite \ Contracts \ Factory existiert nicht
- 16. Was bedeutet Composable genau?
- 17. Was genau ist Athen?
- 18. Laravel, was sind Routenhelfer (get und post)?
- 19. Was sind die Laravel-Warteschlangenaufträge in Express?
- 20. Was bedeutet xmlns = "" genau
- 21. Was genau sind späte statische Bindungen in PHP?
- 22. Was genau sind C++ - Definitionen, Deklarationen und Zuweisungen?
- 23. Was genau sind die Gefahren von eval (parse (...))?
- 24. Was genau sind Inhaltsskript und Hintergrundskript in der Chrome-Erweiterung?
- 25. Welches Problem lösen JavaScript-Versprechungen? Oder was sind sie genau?
- 26. Was genau sind Moment 3 und Moment 4 in System.Math.MomentSkewKurtosis
- 27. Was genau sind WordNet Lexikographer Dateien? Verstehen, wie WordNet funktioniert
- 28. Was genau sind die von NVPROF berichteten Transaktionsmetriken?
- 29. BindingResolutionsException Ziel [Laravel \ Socialite \ Contracts \ Factory] ist nicht instanziierbar
- 30. Was genau beinhaltet currentDesign.writeCssincludes?