Heim  >  Artikel  >  PHP-Framework  >  Was ist der Laravel-Startvorgang?

Was ist der Laravel-Startvorgang?

PHPz
PHPzOriginal
2023-04-23 09:10:50799Durchsuche

Laravel ist ein beliebtes PHP-Open-Source-Framework. Der Startvorgang ähnelt dem anderer Frameworks und erfordert bestimmte Vorbereitungen. In diesem Artikel wird der Startvorgang von Laravel ausführlich vorgestellt.

1. Eintragsdatei index.php

Die Eintragsdatei von Laravel ist index.php, und alle Anfragen gelangen über diese Datei in das Framework. In index.php können wir den folgenden Codeausschnitt sehen:

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

$app = require_once __DIR__.'/../bootstrap/app.php';

Dieser Kommentar erklärt die Funktion des Codes. Sie können auch sehen, dass require_once die Datei bootstrap/app.php einführt, bei der es sich um den Start von Laravel handelt Datei.

2. Startdatei bootstrap/app.php

In der app.php-Datei können wir hauptsächlich die Instanziierung von drei Schlüsselklassen sehen: $app, $kernel, $ Router. Lassen Sie uns sie im Folgenden einzeln vorstellen.

  1. $app

$app ist eine Instanz der IlluminateFoundationApplication-Klasse und ist der Kern des gesamten Frameworks. Es verwaltet den Container Die Laravel-Anwendung bietet viele leistungsstarke Funktionen wie Routing, Anforderungsverarbeitung, Ereignisse, Cookies, Sitzungen, Ausnahmebehandlung usw. Schauen wir uns als Nächstes an, wie $app initialisiert wird.

Im Konstruktor von $app erbt es zunächst die IlluminateContainerContainer-Klasse und generiert eine Containerinstanz. In dieser Containerinstanz können wir die von uns benötigten Dienste binden und injizieren.

Als nächstes werden alle zentralen Containerdienste von Laravel registriert, wie Routing, Protokolle, Ansichten usw.

Abschließend werden die Laravel-Konfigurationsdateien geladen, die im Konfigurationsverzeichnis gespeichert sind, und sie in den Eigenschaften der $app-Instanz abgelegt.

  1. $kernel

$kernel ist eine Instanz der IlluminateContractsHttpKernel-Schnittstelle. Es ist der HTTP-Kernel von Laravel und für die Verarbeitung des gesamten HTTP verantwortlich Anfragen. Eine Brücke zwischen Anfragen und Antworten. Die Hauptfunktion von $kernel besteht darin, die angeforderte Middleware aufzurufen, die Anfrage an den Router weiterzuleiten und schließlich die Antwort an den Client weiterzuleiten.

Nachdem $app instanziiert wurde, ruft es die Methode $app->make() auf und erhält dann die Instanz von $kernel durch Containerauflösung. In diesem Prozess analysiert der Container von $app die Konfiguration von $config['app']['middleware'], registriert die Middleware und speichert die Middleware dann in der Instanz von $kernel.

  1. $router

$router ist eine Instanz der IlluminateRoutingRouter-Klasse, dem Router von Laravel, der die gesamte Routenauflösung und -verteilung übernimmt. Die Hauptfunktion von $router besteht darin, die Anfrage mit der entsprechenden Operation abzugleichen und die für die Anfrage zu verarbeitende Route in den Eigenschaften der Anfrageinstanz zu speichern.

Nachdem $app instanziiert wurde, generiert es mithilfe der entsprechenden Konfiguration eine Router-Instanz und registriert sie über die Instanzmethode der $app-Instanz im Laravel-Container.

Darüber hinaus sollte erwähnt werden, dass $app die Anforderungsinstanz und andere verwandte Instanzen zur Verwendung durch Middleware, Routing und Controller an den Container bindet. Nachdem die Containerbindung abgeschlossen ist, hat Laravel die Vorbereitungsarbeiten abgeschlossen.

3. Planungsanfragen

In Laravel ist der Anfrageplanungsprozess wie folgt:

1 Initiieren Sie eine HTTP-Anfrage vom Client.

2. Die Anfrage durchläuft zunächst die Datei public/index.php von Laravel und wird an die Datei bootstrap/app.php weitergeleitet.

3. In der Datei bootstrap/app.php generiert Laravel Instanzen von $app, $kernel und $router und bindet die Anforderungsinstanz an den Container. Dann ruft $app die Handle-Methode von $kernel auf, um die Anfrage zu verarbeiten.

4. In der Handle-Methode von $kernel analysiert und ruft Laravel die registrierte Middleware nacheinander über den Container auf und leitet die Anfrage dann an den Router weiter.

5. Im Router extrahiert Laravel den URI aus der Anfrage und gleicht ihn mit allen in der Router-Instanz definierten Routen ab. Wenn eine passende Route gefunden wird, übergibt Laravel die Kontrolle an den entsprechenden Controller.

6. Der Controller ist der Haupthandler der Anfrage. Er ruft den Geschäftslogikcode auf, um die Anfrage zu verarbeiten, und gibt das Ergebnis schließlich als Antwort an den Client zurück.

7. Wenn der Router keine passende Route findet, leitet er die Anfrage an den Fehlerhandler weiter.

8. Im Fehlerhandler generiert Laravel eine entsprechende Antwort und sendet sie basierend auf dem Fehlertyp und der Konfiguration an den Client zurück.

Das Obige ist der vollständige Prozess einer Laravel-Anfrage. Durch ein umfassendes Verständnis des Startvorgangs und des Anforderungsplanungsprozesses von Laravel können wir die interne Architektur und die Arbeitsprinzipien besser verstehen und sie somit besser für die Abwicklung unseres Geschäfts nutzen.

Das obige ist der detaillierte Inhalt vonWas ist der Laravel-Startvorgang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn