Ordnerstruktur
- Einführung
- App-Verzeichnis
- Bootstrap Verzeichnis
- Konfigurationsverzeichnis
- Datenbankverzeichnis
- Öffentliches Verzeichnis
- Ressourcen Verzeichnis
- Routenverzeichnis
- Speicherverzeichnis
- Testverzeichnis
- Anbieter Katalog
- App-Katalog
- Konsole Katalog
- Veranstaltungskatalog
- Ausnahmenkatalog
- HTTP-Katalog
- Jobs Verzeichnis
- Hörerverzeichnis
- E-Mail-Verzeichnis
- Benachrichtigungsverzeichnis
- Richtlinien Katalog
- Anbieterkatalog
- Regelkatalog
- Warum gibt es kein Modellverzeichnis?
Laravels Ordnerstruktur
Einführung
Standardmäßige Laravel-Anwendungsstruktur Zweck Bietet ein toller Ausgangspunkt für Anwendungen jeder Größe. Natürlich können Sie Ihre Bewerbungen so organisieren, wie Sie möchten. Laravel legt nahezu keine Beschränkungen hinsichtlich des Speicherorts einer bestimmten Klasse fest, solange diese automatisch von Composer geladen werden können.
Warum gibt es kein Modellverzeichnis?
Zu Beginn der Verwendung von Laravel sind viele Entwickler verwirrt über das Fehlen des Verzeichnisses models
. Das Fehlen eines solchen Verzeichnisses ist jedoch beabsichtigt. Für uns ist „Modell“ mehrdeutig, weil unterschiedliche Menschen unterschiedliche Vorstellungen von „Modell“ haben. Einige Entwickler bezeichnen das „Modell“ einer Anwendung als die Gesamtheit ihrer gesamten Geschäftslogik, während andere das „Modell“ als die Klassen bezeichnen, die mit einer relationalen Datenbank interagieren.
Aus diesem Grund platzieren wir Eloquent-Modelle standardmäßig im Verzeichnis app
und ermöglichen Entwicklern, sie an anderer Stelle zu platzieren.
Stammverzeichnis
App-Verzeichnis
app
Das Verzeichnis enthält den Kerncode der Anwendung. Fast alle Kurse in Ihrer Bewerbung sollten hier aufgeführt sein. Auf die Details dieses Verzeichnisses gehen wir später genauer ein.
Bootstrap-Verzeichnis Das Verzeichnis
bootstrap
enthält die app.php
-Dateien des Bootstrap-Frameworks. Dieses Verzeichnis enthält auch ein cache
-Verzeichnis, das vom Framework generierte Dateien zur Verbesserung der Leistung enthält, z. B. Routing- und Service-Cache-Dateien. cache
enthält, wie der Name schon sagt, alle Konfigurationsdateien des Anwendung. Wir empfehlen Ihnen, diese Dokumente durchzulesen, um sich mit allen verfügbaren Optionen vertraut zu machen. config
enthält Datenpopulations- und Migrationsdateien sowie Modellfabrikklassen. Sie können es auch als SQLite-Datenbankspeicherverzeichnis verwenden. database
Das Verzeichnis enthält die Eintragsdatei public
, die den Einstiegspunkt der Anwendung betritt für alle Anfragen. Dieses Verzeichnis enthält auch einige Ihrer Ressourcendateien (z. B. Bilder, JavaScript und CSS). index.php
Das Verzeichnis enthält Ansichten und unkompilierte Ressourcendateien (wie LESS, SASS oder JavaScript). Dieses Verzeichnis enthält auch alle Ihre Sprachdateien. resources
Routenverzeichnis
routes
Das Verzeichnis enthält alle Routendefinitionen der Anwendung. Standardmäßig enthält Laravel mehrere Routendateien: web.php
, api.php
, console.php
und channels.php
. Die Datei
web.php
enthält RouteServiceProvider
-Routen, die in der Middleware-Gruppe web
platziert sind, die den Sitzungsstatus, den CSRF-Schutz und die Cookie-Verschlüsselung bereitstellt. Wenn Ihre Anwendung keine zustandslose RESTful-API bereitstellt, sollten alle Routen in web.php
-Dateien definiert werden. Die .
api.php
-Datei enthält RouteServiceProvider
-Routen, die in der api
-Middleware-Gruppe platziert sind, die eine Frequenzbegrenzung ermöglicht. Diese Routen sind zustandslos, sodass Anforderungen, die über diese Routen in die Anwendung eingehen, über das Token authentifiziert werden sollen und keinen Zugriff auf den Sitzungsstatus haben. In der Datei
console.php
werden alle auf Konsolenbefehlen basierenden Abschlussfunktionen definiert. Jede Abschlussfunktion ist an eine Befehlsinstanz gebunden und ermöglicht eine einfache Interaktion mit Befehlszeilen-IO-Methoden. Obwohl diese Dateien keine HTTP-Routen definieren, definieren sie auch konsolenbasierte Einstiegspunkte (Routen) in die Anwendung.
channels.php
Ein Ort, an dem Sie alle von Ihrer Anwendung unterstützten Veranstaltungsübertragungskanäle registrieren können.
Speicherverzeichnis
storage
Das Verzeichnis enthält kompilierte Blade-Vorlagen, durch Sitzungssitzungen generierte Dateien und Cache Dateien und andere vom Framework generierte Dateien. Dieses Verzeichnis ist in drei Unterverzeichnisse unterteilt: app
, framework
und logs
. Das Verzeichnis app
kann zum Speichern aller von der Anwendung generierten Dateien verwendet werden. Das Verzeichnis framework
wird zum Speichern von Dateien und Cache verwendet, die vom Framework generiert werden. Schließlich enthält das Verzeichnis logs
die Protokolldateien der Anwendung.
storage/app/public
kann zum Speichern benutzergenerierter Dateien verwendet werden, z. B. Benutzeravatare, die öffentlich zugänglich sein müssen. Sie sollten einen public/storage
-Softlink erstellen, der auf dieses Verzeichnis verweist. Diesen Link können Sie direkt über den Befehl php artisan storage:link
erstellen.
Testverzeichnis Das Verzeichnis
tests
enthält automatisierte Testdateien. Es gibt vorgefertigte Beispiele in PHPUnit als Referenz. Jeder Testklasse sollte das Suffix Test
hinzugefügt werden. Sie können den Befehl phpunit
oder php vendor/bin/phpunit
verwenden, um Tests auszuführen.
Anbieterverzeichnis Das Verzeichnis
vendor
enthält alle Ihre Composer-Abhängigkeitspakete.
App-Verzeichnis
Die meisten Ihrer Anwendungen befinden sich im Verzeichnis app
. Standardmäßig ist dieses Verzeichnis der Namespace App
und wird von Composer automatisch mithilfe des PSR-4-Autoloading-Standards geladen. Das Verzeichnis
app
enthält weitere verschiedene Verzeichnisse, wie zum Beispiel: Console
, Http
und Providers
. Stellen Sie sich die Verzeichnisse Console
und Http
als Bereitstellung von APIs für den Kern Ihrer Anwendung vor. Sowohl das HTTP-Protokoll als auch die CLI sind Mechanismen für die Interaktion mit Anwendungen, enthalten jedoch keine eigentliche Anwendungslogik. Mit anderen Worten: Es handelt sich um zwei Möglichkeiten, Befehle an Ihre Anwendung zu erteilen. Das Verzeichnis Console
enthält alle Artisan-Befehle, während das Verzeichnis Http
Ihre Controller, Middleware und Anforderungen enthält.
Wenn Sie den Befehl make
Artisan verwenden, um eine Klasse zu generieren, werden verschiedene andere Verzeichnisse unter dem Verzeichnis app
generiert. So existiert beispielsweise das Verzeichnis app/Jobs
erst, wenn Sie den Befehl make:job
Artisan ausführen, um eine Jobklasse zu generieren.
{tip} Viele Klassen werden im Verzeichnis
app
über generiert Handwerkerbefehle. Um die verfügbaren Befehle anzuzeigen, führen Sie den Befehlphp artisan list make
in Ihrem Terminal aus.
Broadcasting-Verzeichnis Das
Broadcasting
-Verzeichnis enthält alle Broadcast-Kanalklassen für Ihre Anwendung. Diese Klassen werden mit dem Befehl make:channel
generiert. Dieses Verzeichnis existiert standardmäßig nicht, wird aber erstellt, wenn Sie den ersten Kanal erstellen. Weitere Informationen zu Kanälen finden Sie in der Dokumentation zur Veranstaltungsübertragung.
Konsolenverzeichnis Das Verzeichnis
Console
enthält alle benutzerdefinierten Artisan-Befehle für Ihre Anwendung. Diese Befehle können mit dem Befehl make:command
generiert werden. In diesem Verzeichnis befindet sich auch der Konsolenkernel, in dem Sie benutzerdefinierte Artisan-Befehle registrieren und geplante Aufgaben definieren können.
Veranstaltungsverzeichnis
Standardmäßig existiert dieses Verzeichnis nicht, Sie können jedoch event:generate
und <🎜 übergeben > Handwerkliche Befehle zum Erstellen. make:event
Verzeichnisplatzierungs-Ereignisklasse. Ereignisse können verwendet werden, um andere Teile der Anwendung darüber zu informieren, dass eine bestimmte Aktion stattgefunden hat, was für große Flexibilität und Entkopplung sorgt. Events
Das Verzeichnis enthält die Ausnahmebehandlung der Anwendung und ist auch ein Ort, an dem die Anwendung Würfe Ein großartiger Ort, um etwas Außergewöhnliches zu finden. Wenn Sie anpassen möchten, wie Ausnahmen protokolliert und gerendert werden, sollten Sie die Klasse Exceptions
in diesem Verzeichnis ändern. Handler
Http-Verzeichnis Das Verzeichnis
Http
enthält Ihre Controller, Middleware und Formularanfragen. Fast die gesamte Logik zur Bearbeitung von Anfragen, die in der Anwendung eingehen, wird in diesem Verzeichnis abgelegt.
Stellenverzeichnis
Standardmäßig ist dieses Verzeichnis nicht vorhanden, aber wenn Sie den Befehl make:job
Artisan ausführen, es wird erstellt. Jobs
Warteschlangenfähige Jobs der Verzeichnisplatzierungsanwendung. Jobs können von der Anwendung geplant werden oder während der Lebensdauer der aktuellen Anfrage synchron ausgeführt werden. Jobs, die während der aktuellen Anfrage synchron ausgeführt werden, werden manchmal als „Befehle“ bezeichnet, da sie eine Implementierung des Befehlsmusters darstellen.
Listeners-Verzeichnis
Standardmäßig existiert dieses Verzeichnis nicht, aber wenn Sie event:generate
oder <🎜 ausführen > Artisan-Befehl, es wird erstellt. make:listener
Das Verzeichnis enthält Ereignisbehandlungsklassen. Ein Ereignis-Listener empfängt eine Ereignisinstanz und führt Logik als Reaktion auf das ausgelöste Ereignis aus. Beispielsweise könnte ein Listeners
-Ereignis von einem UserRegistered
-Listener verarbeitet werden. SendWelcomeEmail
Artisan-Befehl ausführen und es wird erstellt. make:mail
Das Verzeichnis enthält alle Klassen, die von der Anwendung zum Senden von E-Mails verwendet werden. Mit dem Mail-Objekt können Sie eine Mail-Klasse erstellen, die die gesamte Logik kapselt. In dieser einfachen Klasse können Sie die Methode Mail
zum Senden von E-Mails verwenden. Mail::send
Artisan-Befehl ausführen und es wird erstellt. make:notification
Das Verzeichnis enthält alle von der Anwendung gesendeten „Transaktions“-Benachrichtigungen, beispielsweise einfache Benachrichtigungen über Ereignisse, die in der Anwendung aufgetreten sind. Die Benachrichtigungsfunktion von Laravel abstrahiert das Senden von Benachrichtigungen über verschiedene Treiber (z. B. E-Mail, Slack, SMS oder in einer Datenbank gespeichert). Notifications
Artisan-Befehl ausführen und es wird erstellt. make:policy
Das Verzeichnis enthält die Autorisierungsrichtlinienklassen der Anwendung. Richtlinien werden verwendet, um zu bestimmen, ob ein Benutzer einen bestimmten Vorgang für eine Ressource ausführen kann. Weitere Informationen finden Sie in der Lizenzdokumentation. Policies
Anbieterverzeichnis Das
Providers
-Verzeichnis enthält alle Dienstanbieter für die Anwendung. Ein Dienstanbieter bootet eine Anwendung, indem er Dienste in einem Dienstcontainer bindet, sich für Ereignisse registriert oder die Ausführung einer anderen Aufgabe für die eingehenden Anforderungen der Anwendung vorbereitet.
In einer neuen Laravel-Anwendung enthält dieses Verzeichnis bereits einige Anbieter. Fühlen Sie sich frei, bei Bedarf Ihre eigenen Anbieter zu diesem Verzeichnis hinzuzufügen.
Regelverzeichnis
Standardmäßig ist dieses Verzeichnis nicht vorhanden, aber wenn Sie make:rule
Artisan-Befehl ausführen und es wird erstellt. Das Verzeichnis Rules
enthält die benutzerdefinierten Validierungsregelobjekte der Anwendung. Regeln werden verwendet, um komplexe Validierungslogik in einem einfachen Objekt zu kapseln. Weitere Informationen finden Sie in der Validierungsdokumentation.