Projects [SHOW]
1. Request Lifecycle
Einführung
Wenn Sie ein Tool in der "realen Welt" verwenden, fühlen Sie sich sicherer, wenn Sie verstehen, wie dieses Tool funktioniert. Die Anwendungsentwicklung ist nicht anders. Wenn Sie verstehen, wie Ihre Entwicklungswerkzeuge funktionieren, fühlen Sie sich wohler und sicherer im Umgang mit ihnen.
Das Ziel dieses Dokuments ist es, Ihnen einen guten, hochrangigen Überblick darüber zu geben, wie das Laravel-Framework funktioniert. Wenn Sie das Gesamtkonzept besser kennenlernen, fühlt sich alles weniger "magisch" an und Sie werden selbstbewusster bei der Entwicklung Ihrer Anwendungen sein. Wenn Sie nicht sofort alle Begriffe verstehen, verlieren Sie nicht den Mut! Versuchen Sie einfach, ein grundlegendes Verständnis dafür zu bekommen, was vor sich geht, und Ihr Wissen wird wachsen, wenn Sie andere Abschnitte der Dokumentation erkunden.
Übersicht über den Lebenszyklus
Das Wichtigste
Der Einstiegspunkt für alle Anfragen an eine Laravel-Anwendung ist die Datei public/index.php. Alle Anfragen werden von Ihrer Webserver-Konfiguration (Apache / Nginx) auf diese Datei geleitet. Die Datei index.php enthält nicht viel Code. Vielmehr ist es ein Ausgangspunkt für das Laden des restlichen Frameworks.
Die Datei index.php lädt die vom Composer generierte Autoloader-Definition und ruft dann eine Instanz der Laravel-Anwendung aus dem bootstrap/app.php-Skript ab. Die erste Aktion, die Laravel selbst durchführt, besteht darin, eine Instanz des Application-/Service - Provider zu erstellen.
HTTP / Konsolen-Kernel
Als nächstes wird die eingehende Anforderung entweder an den HTTP-Kernel oder den Konsolenkern gesendet, je nachdem, welche Art von Anforderung in die Anwendung eintritt. Diese beiden Kernel dienen als zentrale Stelle, durch die alle Anfragen fließen. Im Moment konzentrieren wir uns nur auf den HTTP-Kernel, der sich in app/Http/Kernel.php befindet.
Der HTTP-Kernel erweitert die Klasse Illuminate\Foundation\Http\Kernel, die ein Array von Bootstrappern definiert, die ausgeführt werden, bevor die Anforderung ausgeführt wird. Diese Bootstrapper konfigurieren die Fehlerbehandlung, konfigurieren das Protokoll, erkennen die Anwendungsumgebung und führen andere Aufgaben aus, die erledigt werden müssen, bevor die Anforderung tatsächlich bearbeitet wird.
Der HTTP-Kernel definiert auch eine Liste der HTTP Middleware, die alle Anfragen durchlaufen müssen, bevor sie von der Anwendung verarbeitet werden. Diese Middleware übernimmt das Lesen und Schreiben der HTTP-Session, das Bestimmen, ob sich die Anwendung im Wartungsmodus befindet, das Überprüfen des CSRF-Tokens und vieles mehr.
Die Methodensignatur für die Handle-Methode des HTTP-Kernels ist recht einfach: Empfangen Sie eine Anfrage (Request) und geben Sie eine Antwort (Response) zurück. Stellen Sie sich den Kernel als eine große Blackbox vor, die Ihre gesamte Anwendung repräsentiert. Füttern Sie es mit HTTP-Anfragen und es werden HTTP-Antworten zurückgegeben.
Service Provider
Eine der wichtigsten Kernel-Bootstrapping-Aktionen ist das Laden der Dienstanbieter für Ihre Anwendung. Alle Service Provider für die Anwendung werden im Provider-Array der Konfigurationsdatei config/app.php konfiguriert. Zuerst wird die Register-Methode auf allen Providern aufgerufen, dann, sobald alle Provider registriert sind, wird die Boot-Methode aufgerufen.
Dienstanbieter sind für das Bootstrapping aller verschiedenen Komponenten des Frameworks verantwortlich, wie z.B. der Datenbank-, Warteschlangen-, Validierungs- und Routing-Komponenten. Da sie alle Funktionen des Frameworks booten und konfigurieren, sind Service Provider der wichtigste Aspekt des gesamten Laravel-Bootstrap-Prozesses.
Dispatch Request
Sobald die Anwendung gebootet und alle Dienstanbieter registriert wurden, wird der Request an den Router zum Versand weitergeleitet. Der Router sendet die Anforderung an eine Route oder Steuerung und führt jede routenspezifische Middleware aus.
Fokus auf Service Provider
Dienstanbieter sind wirklich der Schlüssel zum Bootstrapping einer Laravel-Anwendung. Die Anwendungsinstanz wird erstellt, die Dienstanbieter registriert und die Anforderung an die bootfähige Anwendung übergeben. Es ist wirklich so einfach!
Ein sicheres Verständnis dafür, wie eine Laravel-Anwendung erstellt und über Service Provider gebootet wird, ist sehr wertvoll. Die Standard-Dienstanbieter Ihrer Anwendung werden im Verzeichnis app/Providers gespeichert.
Standardmäßig ist der AppServiceProvider ziemlich leer. Dieser Anbieter ist ein großartiger Ort, um die eigenen Bootstrapping und Service Container Bindings Ihrer Anwendung hinzuzufügen. Für große Anwendungen können Sie mehrere Dienstanbieter mit jeweils einer granulareren Art von Bootstrapping anlegen.