Anfragezyklus
in „Alltag“ Wenn Sie ein Werkzeug verwenden, müssen Sie verstehen, wie das Werkzeug funktioniert. Dann ist die Verwendung bequemer. Dasselbe gilt für die Anwendungsentwicklung, wenn Sie das Implementierungsprinzip einer Funktion wirklich verstehen, wird es einfacher und bequemer sein, sie zu verwenden.
Der Zweck dieses Dokuments besteht darin, Ihnen ein klareres Verständnis der Funktionsweise des Laravel-Frameworks zu vermitteln. Verschaffen Sie sich durch das Framework einen ganzheitlichen Blick, sodass sich nicht mehr alles „magisch“ anfühlt. Vertrauen Sie mir, dies wird Ihnen helfen, sich dessen, was Sie tun, bewusster zu werden und mehr Vertrauen in das zu gewinnen, was Sie tun möchten. Auch wenn Sie nicht alle Fachbegriffe verstehen, verlieren Sie nicht das Vertrauen! Probieren Sie es einfach noch ein wenig aus, lernen Sie, wie man es verwendet, und Ihr Wissen wird sich mit Sicherheit erweitern, wenn Sie sich durch die anderen Teile der Dokumentation bewegen.
Zuallererst
Alle Anfrageeinträge für Laravel-Anwendungen sind public/index.php
Dateien. Alle Anfragen werden über Ihren Webserver (Apache/Nginx) per Konfiguration an diese Datei weitergeleitet. index.php
Die Datei enthält nicht viel Code, ist aber der Ausgangspunkt für das Laden des restlichen Frameworks. Die
index.php
-Datei lädt die von Composer generierten Autoload-Einstellungen und ruft dann die Instanz der Laravel-Anwendung aus dem bootstrap/app.php
-Skript ab. Die erste von Laravel selbst ergriffene Aktion besteht darin, einen Anwendungs-/Dienstcontainer zu erstellen.
HTTP/Konsolenkernel
Als nächstes wird die eingehende Anfrage entweder an den HTTP-Kernel oder den Konsolenkern gesendet, abhängig von der Art der Anfrage, die in die Anwendung eingeht. Diese beiden Kerne werden als zentrale Standorte verwendet, über die alle Anfragen weitergeleitet werden. Werfen wir nun einen Blick auf den HTTP-Kern, der sich in app/Http/Kernel.php
befindet.
Der HTTP-Kern erbt die Klasse IlluminateFoundationHttpKernel
, die ein bootstrappers
-Array definiert. Die Klassen in diesem Array werden ausgeführt, bevor die Anforderung ausgeführt wird. Diese Bootstrapper konfigurieren die Fehlerbehandlung, Protokollierung, Überprüfung der Anwendungsumgebung und andere Aufgaben, die vor der Verarbeitung der Anforderung ausgeführt werden müssen.
Der HTTP-Kern definiert auch HTTP-Middleware, die alle Anforderungen durchlaufen müssen, bevor sie von der Anwendung verarbeitet werden. Diese Middleware übernimmt das Lesen und Schreiben von HTTP-Sitzungen, ermittelt, ob sich die Anwendung im Wartungsmodus befindet, überprüft CSRF-Tokens usw.
Die handle
-Methodensignatur des HTTP-Kerns ist ziemlich einfach: Holen Sie sich ein Request
und geben Sie ein Response
zurück. Stellen Sie sich diesen Kernel als eine große Blackbox vor, die die gesamte Anwendung darstellt, HTTP-Anfragen aufnimmt und HTTP-Antworten zurückgibt.
Dienstanbieter
Das Wichtigste beim Kernel-Startvorgang ist der Dienstanbieter Ihrer Anwendung. Die Dienstanbieter unter allen Anwendungen werden im Array config/app.php
in der Konfigurationsdatei providers
konfiguriert. Im ersten Schritt wird die Methode register
aller Dienstanbieter aufgerufen. Sobald alle Dienstanbieter registriert sind, wird die Methode boot
aufgerufen.
Dienstanbieter ermöglichen dem Framework das Öffnen einer Vielzahl von Komponenten, wie z. B. Datenbanken, Warteschlangen, Validatoren und Routing-Komponenten. Solange der Dienstanbieter gestartet ist, kann er alle Funktionen des Frameworks steuern, sodass der Dienstanbieter auch die wichtigste Komponente des gesamten Boot-Zyklus von Laravel ist.
Versand anfordern
Sobald gestartet und alle Dienstanbieter registriert sind, wird Request
an den Router zugestellt. Der Router sendet die Anfrage an die gebundene Route oder den Controller und natürlich an die routengebundene Middleware.
Fokus auf Dienstleister
Dienstleister sind der Schlüssel zum wahren Lebenszyklus von Laravel. Sobald die Anwendungsinstanz erstellt ist, wird der Dienstanbieter registriert und dann aufgefordert, von der gestarteten Anwendung übernommen zu werden. Halten Sie es einfach!
Es ist äußerst wertvoll, genau zu verstehen, wie Dienstanbieter aufgebaut sind und wie sie mit Laravel-Anwendungen arbeiten. Selbstverständlich werden die Standarddienstanbieter Ihrer Anwendung unter app/Providers
gespeichert.
Standardmäßig ist AppServiceProvider
leer. Dieser Anbieter ist ein guter Ort, um die eigene Bootstrap-Verarbeitung und Service-Container-Bindungen Ihrer Anwendung hinzuzufügen. Natürlich möchten Sie bei großen Projekten möglicherweise mehrere detailliertere Dienstanbieter erstellen.