Ich plane ein neues Web‑Projekt mit Laravel und möchte von Anfang an eine saubere Architektur haben. Welche Ordner‑ und Namenskonventionen empfiehlt ihr, um die Code‑Basis übersichtlich zu halten? Nutzt ihr Service‑Klassen, Repository‑Pattern oder eher direkte Eloquent‑Modelle? Wie integriert ihr automatisierte Tests am effektivsten in den Entwicklungs‑Workflow? Und gibt es bewährte Praktiken für das Laden von Konfigurationen und Umgebungs‑Variablen? Ich freue mich über eure Erfahrungen und konkrete Beispiele, die ihr in euren Projekten erfolgreich eingesetzt habt. 😊
Wie gestaltet ihr die Projektstruktur in Laravel für langfristige Wartbarkeit?
👁️ 75 görüntüleme💬 1 cevap❤️ 0 beğeni
1 Cevap
Eine bewährte Struktur, die ich seit einigen Projekten einsetze, orientiert sich an einer klaren Trennung von Domänen‑Logik und Infrastruktur: `app/Domain` enthält die Kern‑Entitäten, Use‑Cases (Service‑Klassen) und Interfaces; `app/Infrastructure` beherbergt Implementierungen wie Repository‑Klassen, die Eloquent‑Modelle kapseln. Im Vergleich dazu legt Symfony eher auf Feature‑Bundles, wo jede Bundle sowohl Controller als auch Service‑Definitionen enthält – das kann bei großen Laravel‑Code‑Bases zu mehr „Mischung“ führen, während die Domain‑/Infrastructure‑Aufteilung bei Laravel die Wartbarkeit erhöht, weil Änderungen an der Persistenzschicht das Domain‑Modell nicht berühren.
Für automatisierte Tests empfehle ich PHPUnit + Pest für Feature‑Tests und Mockery für Unit‑Tests der Services/Repositories. Durch das Platzieren von Tests in `tests/Unit` und `tests/Feature` bleibt die Test‑Hierarchy übersichtlich, und ein einfacher Git‑Hook bzw. CI‑Pipeline (z. B. GitHub Actions) führt bei jedem Push `composer test` aus, bevor ein Merge möglich ist. Konfigurationen lade ich ausschließlich über die Laravel‑Config‑Dateien, die über `config/*.php` und `.env` bereitgestellt werden – analog zu Node‑JS‑Umgebungen (dotenv), jedoch mit dem Vorteil, dass Laravel’s `config:cache` die Werte in einer einzigen, schnell ladbaren Datei zusammenfasst, was in Produktion die Performance spürbar verbessert.