Ich arbeite an einem PHP-Projekt mit Laravel 5 und ich denke darüber nach, eine andere Ordnerstruktur dafür einzurichten.Was ist der richtige Weg, um ein größeres Laravel 5-Projekt in Module zu zerlegen?
Der Standard Laravel Ordnerstruktur ist so etwas wie dieses:
/app
/commands
/Http
/Controllers
/Middleware
Kernel.php
routes.php
/Providers
Model.php
/config
/resources
etc...
Wenn jedoch das Projekt wächst größer und Sie haben viele Controller/Speicheranlagen/Modelle und so. Diese Struktur wird brechen.
Zum Beispiel: Es ist nicht sehr einfach einen Fehler in Ihrem Admin-Panel zu finden, wenn Sie Ihre Routen durchsuchen müssen, welcher Controller zuständig ist, diesen Controller unter einer großen Anzahl von Controllern finden, herausfinden, was das bedeutet, finde andere möglicherweise verantwortliche Klassen in anderen großen Ordnern und so weiter. Kurz gesagt: Es ist ein Durcheinander.
Ich habe nach Wegen gesucht, die Struktur in Module zu brechen. Ich habe einen Weg gefunden, es zu tun, aber ich bin mir nicht sicher, ob es ein guter Weg ist.
Ich würde einen Ordner jede Funktionalität machen und alle zugehörigen Code zusammen. Zum Beispiel:
/app
/Admin
/Controllers
/Requests
/Models
routes.php
/Products
/Controllers
/Requests
/Models
routes.php
usw. (Sie erhalten den Punkt)
Stattdessen 1 Router aus dem Standard-RouteServiceProvider.php der Initialisierung, würde ich einen Serviceprovider für jedes Modul schreiben müssen und beginnen alle einzelnen Routen aus Dort. In diesem Fall hätte ich einen AdminServiceProvider und einen ProductServiceProvider, die jeweils die Datei routes.php in ihrem eigenen Unterverzeichnis (und damit ihren eigenen Controller-Namespace) benötigen.
Das scheint meinen Fall jetzt zu lösen, aber ich frage mich, ob ich Probleme mit diesem Setup bekommen werde. Alle Beispiele, die ich im Internet finden kann, bleiben einfach bei der Standardstruktur. Kann mir jemand sagen, ob das ein vernünftiger Weg ist? Oder hat jemand eine andere Möglichkeit, dies zu tun?
Die Struktur sieht gut aus. Ich schlage vor, dass Sie die Verzeichnisse in StudlyCase benennen, damit sie mit der Benennung Ihrer Namespaces übereinstimmen (die nach Konvention Studlycase sind). Sonst würde ich es tun.Am Ende ist Laravel ein Framework, mit dem Sie viele Dinge konfigurieren und ändern können, die Ihren Bedürfnissen entsprechen. Probieren Sie es einfach so aus, wie Sie es für gut halten und wenn Sie ein Problem auf der Straße haben, suchen Sie online nach einer Lösung und wenn Sie wieder leer sind, stellen Sie eine neue Frage zu SO. – lukasgeiter
Ah ja, ich habe das richtige Case im realen Projekt verwendet, ich habe es im Beispiel hier nur falsch eingegeben. Vielen Dank für Ihr Feedback. – iamrobin