2015-03-14 4 views
5

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?

+1

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

+0

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

Antwort

5

Dies ist ein guter Weg, den Sie vorgeschlagen haben, aber es ist nicht notwendig, es auf eigene Faust zu tun. Im Moment arbeite ich an einem L5-Projekt, das Module verwendet - jeder von ihnen hat Verzeichnisse für Repositories, Modelle, eigene Routendatei usw. Ich benutze Caffeinated module für diesen

+0

Danke. Ich werde das untersuchen. – iamrobin

3

Ich glaube auch, dass die Struktur gut aussieht. Ich würde auch auf einem zusätzlichen, Kern- oder Basisordner hinzufügen, die Basisklassen enthalten und wiederverwendbar componets, um sicherzustellen, Sie haben keine Duplizierung von Code in den einzelnen „Bausteine“

+0

OK großartig. Danke für die Ressourcen. Ich habe gerade das Video gesehen, nicht ganz das, wonach ich zuerst gesucht habe, aber es gab mir ein paar nette Ideen darüber, wie man Dinge organisiert. – iamrobin

Verwandte Themen