Abstrahiertes CRUD-Muster in Laravel | Komentor

Bei der Entwicklung einer App ist es ziemlich üblich, dass sie immer viele CRUD-Vorgänge enthält. Die Frage ist, wie gehen Sie damit um? Lassen Sie mich Ihnen einen abstrahierten Weg zeigen, CRUD in Laravel zu machen.

Stellen Sie sich vor, wir entwickeln eine E-Commerce-Anwendung, dann haben wir die folgenden Module, Benutzer und natürlich Produkte. Es kann mehr Module haben, aber wir können uns auf diese beiden konzentrieren.

Daher identifizieren wir normalerweise zuerst die Modelle und ihre Attribute und bereiten ihre Tabellenmigrationen vor.

Das nächste, was wir tun müssen, ist zu visualisieren „Wie funktionieren diese Crud-Operationen? Haben sie etwas gemeinsam?“. Wir alle wissen, dass Laravel uns einige Konventionen gibt Ressourcen-Controller für einen typischen Crud-Betrieb. Angenommen, wir erstellen das REST-API-Backend für die SPA-Anwendung. Wir werden also an diesen folgenden Methoden arbeiten: index(), store(), show($id), update($id)und destroy($id).

Aus dem obigen Klassendiagramm kann ich Ihnen sagen, dass unsere Benutzer- und Produktcontroller bereits fertig sind! Aber wie wird es in unserem Code aussehen?

Wir werden jetzt unsere Basis-Crud-Klasse erstellen. Der Code hängt tatsächlich davon ab, was die Anwendung tun muss. Der Einfachheit halber werde ich nur minimalen Code verwenden, um Ihnen eine Demo zu geben, und wir werden unsere Modelle direkt in unserem Controller verwenden, aber tatsächlich möchten Sie vielleicht Repositories verwenden.

Das index()Methode.

Unser index() Methode ist so einfach. Es gibt nur eine paginierte Liste unserer Benutzer- und Produktmodelle zurück. Das sieht man an unserem BaseCrudController erfordert, dass ein Modell injiziert wird, also müssen wir auf beiden injizieren oder modellierenUsersController und ProductsController. Seit unserem UsersController und ProductsController erstreckt sich auf BaseCrudControllerdas index() -Methode wird auch von den beiden Controllern geerbt.

Die Methode create()

Zum create() Methode, Benutzer- und Produktmodelle haben unterschiedliche Attribute, also mit dieser abstrakten Methode inputStore()ist es derjenige, der für die Rückgabe der zu speichernden Benutzer- und Produktattribute verantwortlich ist.

Der Einfachheit halber werde ich in dieser Demonstration nicht zeigen, wie der Validierungscode aussehen wird, und versuchen, selbst herauszufinden, wie Sie Ihre Validierung mit diesem Ansatz codieren.

Die Methode update()

Das update() Methodencode ist selbsterklärend. Sie können sehen, dass es dem sehr ähnlich ist create() -Methode, da sie auch zurückgeben muss, welche Attribute über aktualisiert werden müssen inputUpdate() Methode.

Die Methoden show() und destrue()

Das show() und destroy() Methoden sind ebenfalls selbsterklärend und werden auch automatisch vererbt UsersController und ProductsController.

Fazit

Der Schlüssel, um dies zu erreichen, besteht darin, dieselben Verhaltensweisen und Muster zu identifizieren, damit Sie sie in eine abstrakte Klasse einfügen können und ähnliche konkrete Klassen sie einfach erben können. Dies trägt dazu bei, unseren Code TROCKEN zu halten und hilft uns, unsere Anwendung effizienter und schneller zu entwickeln.

Viel Spaß beim Codieren!!! 😃

Similar Posts

Leave a Reply

Your email address will not be published.