Heim > PHP-Framework > Laravel > Laravel-Startvorgang

Laravel-Startvorgang

WBOY
Freigeben: 2023-05-20 17:40:07
Original
1823 Leute haben es durchsucht

Laravel ist ein beliebtes PHP-Webentwicklungs-Framework. Es bietet eine einfache, leicht zu erlernende und anzuwendende Entwicklungsmethode. Der Startvorgang von Laravel umfasst mehrere Schritte, von denen jeder seine eigene spezifische Rolle hat. Hinter den Kulissen ist der Arbeitsablauf hinter Laravel komplex, aber das Framework-Design von Larevel macht den gesamten Startvorgang einfacher und intuitiver. Im Folgenden wird der Larevel-Startvorgang ausführlich beschrieben.

1. Laden des Framework-Kerns

Alle Startvorgänge von Laravel starten über die Programmeintragsdatei. Der gesamte Startvorgang beginnt mit der Datei public/index.php. Die einzige Funktion dieser Datei besteht darin, die Kerndateien des Laravel-Frameworks zu laden. In public/index.php können wir den folgenden Codeausschnitt sehen: public/index.php 文件开始。该文件唯一的功能是加载 Laravel 框架的核心文件。在 public/index.php 中,我们可以看到以下代码片段:

require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
Nach dem Login kopieren

第一行代码负责加载 Composer 生成的 vendor 目录下的自动加载器。该自动加载器文件在运行时动态地加载框架所需的所有依赖。

第二行则负责加载 Laravel 应用程序的核心。该行代码通过调用 bootstrap/app.php 文件中的 bootstrap() 函数返回一个实例化的应用程序对象 $app

二、运行 Bootstrap

bootstrap/app.php 文件是 Laravel 的引导文件。该文件初始化并配置该框架的各种服务和组件。此外,该文件还加载了应用程序的配置、路由、中间件、异常处理程序等。

bootstrap/app.php 文件中,我们可以看到以下代码片段:

$app = new IlluminateFoundationApplication(
    realpath(__DIR__.'/../')
);

$app->singleton(
    IlluminateContractsHttpKernel::class,
    AppHttpKernel::class
);

$app->singleton(
    IlluminateContractsConsoleKernel::class,
    AppConsoleKernel::class
);

$app->singleton(
    IlluminateContractsDebugExceptionHandler::class,
    AppExceptionsHandler::class
);

return $app;
Nach dem Login kopieren

这些代码片段初始化了应用程序的核心,包括:

  1. 实例化一个 Application 对象,该对象为应用程序的控制台运行时和 HTTP 运行时提供基础设施。
  2. 绑定各类服务提供者,如 IlluminateContractsHttpKernel, IlluminateContractsConsoleKernel, 和 IlluminateContractsDebugExceptionHandler

三、加载服务提供者

我们在上一步中已经提到应用了三种服务提供者。服务提供者是 Laravel 应用程序模块化的基础,负责为应用程序的所有功能提供服务。

服务提供者被定义在 config/app.php 文件中的 providers 数组中,该数组列出了应用程序中所有可用的服务提供者。在启动应用程序时, Laravel 将遍历所有的服务提供者,并为之创建单个绑定。这样,应用程序的其他组件就可以轻松地访问所需的服务。

例如,如果我们在 config/app.php 文件中添加以下代码片段:

'providers' => [
    // ...
    AppProvidersCustomServiceProvider::class,
    // ...
],
Nach dem Login kopieren

当应用程序启动时, Laravel 实例化并注册 AppProvidersCustomServiceProvider 类,其方法应返回一个服务容器实例。

四、自定义启动逻辑

Laravel 的框架设计使得自定义应用程序启动流程非常容易。可以通过添加自定义逻辑来增强应用程序的功能和性能。

bootstrap/app.php 文件中,有一些预定义的启动逻辑,如以下代码片段:

$app->registerCoreContainerAliases();
Nach dem Login kopieren

如果希望添加自定义的启动逻辑,可以在 bootstrap/app.php 文件末尾添加代码。例如,在启动时可以为应用程序添加自定义配置:

$config = new MyCustomConfiguration();
$config->load();
Nach dem Login kopieren

五、启动 HTTP / Console 内核

接下来,应用程序启动 HTTP 内核或控制台内核,这取决于应用程序将如何使用。在 bootstrap/app.php 文件中,我们设置了这两个内核:

$app->singleton(
    IlluminateContractsHttpKernel::class,
    AppHttpKernel::class
);

$app->singleton(
    IlluminateContractsConsoleKernel::class,
    AppConsoleKernel::class
);
Nach dem Login kopieren

现在,应用程序已经准备就绪,可以根据需要启动控制台或 HTTP 运行时。在 Laravel 中,可以通过 Artisan 命令行工具启动控制台,也可以在配置的 Web 服务器上运行它来启动 HTTP 运行。

六、执行响应请求

如果启动 HTTP 基础架构,当用户访问应用程序时,请求将进入 Laravel 核心的 public/index.phprrreee

Die erste Codezeile ist für das Laden des Autoloaders in das von Composer generierte Herstellerverzeichnis verantwortlich. Diese Autoloader-Datei lädt zur Laufzeit alle vom Framework benötigten Abhängigkeiten dynamisch.

Die zweite Zeile ist für das Laden des Kerns der Laravel-Anwendung verantwortlich. Diese Codezeile gibt ein instanziiertes Anwendungsobjekt $app zurück, indem die Funktion bootstrap() in der Datei bootstrap/app.php aufgerufen wird. 🎜🎜2. Führen Sie Bootstrap aus🎜🎜Die Datei bootstrap/app.php ist die Boot-Datei von Laravel. Diese Datei initialisiert und konfiguriert die verschiedenen Dienste und Komponenten des Frameworks. Darüber hinaus lädt die Datei die Konfiguration, das Routing, die Middleware, die Ausnahmehandler usw. der Anwendung. 🎜🎜In der Datei bootstrap/app.php können wir die folgenden Codeausschnitte sehen: 🎜rrreee🎜Diese Codeausschnitte initialisieren den Kern der Anwendung, einschließlich: 🎜
  1. Instantiation An Application-Objekt, das die Infrastruktur für die Konsolenlaufzeit und HTTP-Laufzeit der Anwendung bereitstellt.
  2. Verschiedene Dienstanbieter binden, z. B. IlluminateContractsHttpKernel, IlluminateContractsConsoleKernel und IlluminateContractsDebugExceptionHandler.
🎜3. Ladedienstleister🎜🎜Wir haben im vorherigen Schritt die Bewerbung von drei Dienstleistern erwähnt. Dienstanbieter bilden die Grundlage der Laravel-Anwendungsmodularität und sind für die Wartung aller Funktionen der Anwendung verantwortlich. 🎜🎜Dienstanbieter werden im Array providers in der Datei config/app.php definiert, das alle verfügbaren Dienstanbieter in der Anwendung auflistet. Beim Starten der Anwendung durchläuft Laravel alle Dienstanbieter und erstellt eine einzige Bindung für sie. Auf diese Weise können andere Komponenten der Anwendung problemlos auf die erforderlichen Dienste zugreifen. 🎜🎜Wenn wir beispielsweise den folgenden Codeausschnitt in die Datei config/app.php einfügen: 🎜rrreee🎜Wenn die Anwendung startet, instanziiert und registriert Laravel die Klasse AppProvidersCustomServiceProvider , Seine Methoden sollten eine Service-Container-Instanz zurückgeben. 🎜🎜4. Angepasste Startlogik🎜🎜Das Framework-Design von Laravel macht es sehr einfach, den Anwendungsstartprozess anzupassen. Die Anwendungsfunktionalität und -leistung kann durch das Hinzufügen benutzerdefinierter Logik verbessert werden. 🎜🎜In der Datei bootstrap/app.php gibt es einige vordefinierte Startlogik, wie zum Beispiel den folgenden Codeausschnitt: 🎜rrreee🎜Wenn Sie eine benutzerdefinierte Startlogik hinzufügen möchten, können Sie sie in bootstrap/ Fügen Sie den Code am Ende der Datei app.php hinzu. Beispielsweise kann der Anwendung beim Start eine benutzerdefinierte Konfiguration hinzugefügt werden: 🎜rrreee🎜 5. Starten Sie den HTTP-/Konsolenkernel. 🎜🎜 Als Nächstes startet die Anwendung den HTTP-Kernel oder den Konsolenkernel, je nachdem, wie die Anwendung ihn verwenden wird. In der Datei bootstrap/app.php richten wir diese beiden Kerne ein: 🎜rrreee🎜Jetzt ist die Anwendung bereit, je nach Bedarf die Konsole oder HTTP-Laufzeit zu starten. In Laravel können Sie die Konsole über das Artisan-Befehlszeilentool starten oder auf einem konfigurierten Webserver ausführen, um eine HTTP-Ausführung zu initiieren. 🎜🎜6. Antwortanforderung ausführen🎜🎜Wenn Sie die HTTP-Infrastruktur starten und der Benutzer auf die Anwendung zugreift, wird die Anforderung in die Datei public/index.php im Laravel-Kern eingegeben. Diese Datei leitet die Anforderung über das Routing-System an die richtige Controller-Methode weiter. 🎜🎜Im Allgemeinen umfasst der Startvorgang von Laravel viele Schritte, angefangen beim Laden des Framework-Kerns über Dienstanbieter, benutzerdefinierte Startlogik sowie den Start von Konsolen- und HTTP-Kernelprogrammen. Dieses prozessorientierte Design macht Laravel zu einem sehr flexiblen, anpassbaren und benutzerfreundlichen Framework für die Anwendungsentwicklung jeder Größe. 🎜

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

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage