Zum Hauptinhalt springen

Einführung

Die Standard-Anwendungsstruktur von Laravel liefert einen Ausgangspunkt, der sich sowohl für große als auch für kleine Anwendungen gut eignet. Wie Sie Ihre Anwendung strukturieren, bleibt jedoch Ihnen überlassen. Laravel schreibt Ihnen kaum vor, wo Sie Ihre Klassen ablegen müssen. Solange Composer die Klassen autoladen kann, ist alles in Ordnung.

Root-Verzeichnis

Wenn Sie ein neues Laravel-Projekt anlegen, entsteht folgende Verzeichnisstruktur:
example-app/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env
├── artisan
└── composer.json

Verzeichnis app/

Speichert den Kern-Code Ihrer Anwendung. Nahezu alle Klassen Ihrer Anwendung – Controller, Modelle, Middleware und mehr – liegen hier. Standardmäßig enthält es die Unterverzeichnisse Http, Models und Providers. Wenn Sie Klassen mit Artisan-Befehlen erzeugen, werden weitere Unterverzeichnisse automatisch angelegt.

Verzeichnis bootstrap/

Enthält die Datei app.php, die das Framework startet. Außerdem enthält es das Verzeichnis cache/, das Performance-Optimierungsdateien wie Route- und Service-Cache speichert.

Verzeichnis config/

Enthält alle Konfigurationsdateien Ihrer Anwendung. Es wird empfohlen, diese Dateien durchzulesen, damit Sie die verfügbaren Optionen kennenlernen.

Verzeichnis database/

Speichert Datenbank-Migrationen, Modell-Factories und Seeder. Auch eine SQLite-Datenbankdatei kann hier abgelegt werden.

Verzeichnis public/

Enthält die Datei index.php, die den Einstiegspunkt aller Anfragen an Ihre Anwendung bildet. Außerdem werden hier Assets wie Bilder, JavaScript und CSS abgelegt.
Konfigurieren Sie das Document Root Ihres Webservers so, dass es auf das Verzeichnis public/ Ihres Laravel-Projekts zeigt. Wenn Sie stattdessen den Projekt-Root oder ein anderes Unterverzeichnis direkt veröffentlichen, riskieren Sie, sensible Dateien preiszugeben.

Verzeichnis resources/

Enthält Views sowie unkompilierte Assets wie CSS und JavaScript.

Verzeichnis routes/

Speichert alle Routendefinitionen Ihrer Anwendung. Standardmäßig gibt es zwei Routen-Dateien: web.php und console.php.
DateiZweck
web.phpRouten für den Browser. Auf sie wird die Middleware-Gruppe web angewendet, die Session, CSRF-Schutz und Cookie-Verschlüsselung bereitstellt.
console.phpDatei, in der Sie Artisan-Befehle als Closures definieren.
api.phpStateless-API-Routen. Mit dem Befehl install:api hinzugefügt.
channels.phpDatei zur Registrierung von Broadcasting-Kanälen.

Verzeichnis storage/

Speichert vom Framework erzeugte Dateien wie Logs, kompilierte Blade-Templates, dateibasierte Sessions und File-Cache. Es ist in die drei Unterverzeichnisse app/, framework/ und logs/ aufgeteilt.

Verzeichnis tests/

Speichert Ihre automatisierten Tests. Beispiele für Unit- und Feature-Tests mit Pest oder PHPUnit sind von Anfang an enthalten.

Verzeichnis vendor/

Enthält die Composer-Abhängigkeiten. Committen Sie dieses Verzeichnis nicht in die Versionskontrolle.

Details zum Verzeichnis app/

Viele Klassen im Verzeichnis app lassen sich mit Artisan-Befehlen erzeugen. Um die verfügbaren Befehle zu sehen, führen Sie aus:
php artisan list make
Enthält Controller, Middleware und Form Requests. Nahezu die gesamte Logik zur Verarbeitung von Anfragen befindet sich hier.
Enthält sämtliche Eloquent-Modell-Klassen. Für jede Datenbanktabelle gibt es ein zugehöriges Modell, mit dem Sie Daten abfragen und einfügen.
Enthält alle Service Provider Ihrer Anwendung. Service Provider binden Dienste in den Container, registrieren Events und übernehmen weitere Startaufgaben.
Enthält alle eigenen Artisan-Befehle. Sie können mit make:command erzeugt werden.
Enthält alle benutzerdefinierten Exceptions Ihrer Anwendung. Sie können mit make:exception erzeugt werden.

Wichtige Dateien

Datei .env

Verwaltet Konfigurationswerte, die sich je nach Umgebung unterscheiden (z. B. Datenbank-Zugangsdaten oder API-Schlüssel). Sie werden über den Helper env() aus den Konfigurationsdateien in config/ referenziert.
APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=sqlite

Datei artisan

Der Einstiegspunkt der Artisan-Kommandozeilenschnittstelle. Sie führen sie in der Form php artisan <Befehlsname> aus.

Nächste Schritte

Routing

Lernen Sie, wie Sie Routen definieren und URLs mit Anwendungslogik verknüpfen.
Zuletzt geändert am 13. Juli 2026