Maison  >  Article  >  cadre php  >  processus de démarrage de Laravel

processus de démarrage de Laravel

WBOY
WBOYoriginal
2023-05-20 17:40:071779parcourir

Laravel est un framework de développement Web PHP populaire. Il fournit une méthode de développement simple, facile à apprendre et à utiliser. Le processus de démarrage de Laravel comprend plusieurs étapes, chacune ayant son propre rôle spécifique. En coulisses, le flux de travail derrière Laravel est complexe, mais la conception du framework de Larevel rend l'ensemble du processus de démarrage plus simple et plus intuitif. Ce qui suit décrit en détail le processus de démarrage de Larevel.

1. Chargement du noyau du framework

Tous les processus de démarrage de Laravel démarrent via le fichier d'entrée du programme. L'ensemble du processus de démarrage commence par le fichier public/index.php. La seule fonction de ce fichier est de charger les fichiers core du framework Laravel. Dans public/index.php, nous pouvons voir l'extrait de code suivant : public/index.php 文件开始。该文件唯一的功能是加载 Laravel 框架的核心文件。在 public/index.php 中,我们可以看到以下代码片段:

require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

第一行代码负责加载 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;

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

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

三、加载服务提供者

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

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

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

'providers' => [
    // ...
    AppProvidersCustomServiceProvider::class,
    // ...
],

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

四、自定义启动逻辑

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

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

$app->registerCoreContainerAliases();

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

$config = new MyCustomConfiguration();
$config->load();

五、启动 HTTP / Console 内核

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

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

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

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

六、执行响应请求

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

La première ligne de code est responsable du chargement de l'autoloader dans le répertoire des fournisseurs généré par Composer. Ce fichier de chargement automatique charge dynamiquement toutes les dépendances requises par le framework au moment de l'exécution.

La deuxième ligne est chargée de charger le noyau de l'application Laravel. Cette ligne de code renvoie un objet application instancié $app en appelant la fonction bootstrap() dans le fichier bootstrap/app.php. 🎜🎜2. Exécutez Bootstrap🎜🎜Le fichier bootstrap/app.php est le fichier de démarrage de Laravel. Ce fichier initialise et configure les différents services et composants du framework. De plus, le fichier charge la configuration, le routage, le middleware, les gestionnaires d'exceptions de l'application, etc. 🎜🎜Dans le fichier bootstrap/app.php, nous pouvons voir les extraits de code suivants : 🎜rrreee🎜Ces extraits de code initialisent le cœur de l'application, notamment : 🎜
  1. Instantiation An Objet Application qui fournit l'infrastructure pour l'exécution de la console et l'exécution HTTP de l'application.
  2. Liez divers fournisseurs de services, tels que IlluminateContractsHttpKernel, IlluminateContractsConsoleKernel et IlluminateContractsDebugExceptionHandler.
🎜3. Chargement des prestataires de services🎜🎜Nous avons mentionné la candidature de trois prestataires de services à l'étape précédente. Les fournisseurs de services constituent la base de la modularité de l'application Laravel et sont responsables de la maintenance de toutes les fonctionnalités de l'application. 🎜🎜Les fournisseurs de services sont définis dans le tableau providers du fichier config/app.php, qui répertorie tous les fournisseurs de services disponibles dans l'application. Lors du démarrage de l'application, Laravel parcourra tous les fournisseurs de services et créera une liaison unique pour eux. De cette façon, les autres composants de l’application peuvent facilement accéder aux services requis. 🎜🎜Par exemple, si nous ajoutons l'extrait de code suivant dans le fichier config/app.php : 🎜rrreee🎜Lorsque l'application démarre, Laravel instancie et enregistre la classe AppProvidersCustomServiceProvider , Ses méthodes doivent renvoyer une instance de conteneur de service. 🎜🎜4. Logique de démarrage personnalisée🎜🎜La conception du framework de Laravel facilite la personnalisation du processus de démarrage de l'application. La fonctionnalité et les performances des applications peuvent être améliorées en ajoutant une logique personnalisée. 🎜🎜Dans le fichier bootstrap/app.php, il existe une logique de démarrage prédéfinie, telle que l'extrait de code suivant : 🎜rrreee🎜Si vous souhaitez ajouter une logique de démarrage personnalisée, vous pouvez l'ajouter dans bootstrap/ Ajoutez le code à la fin du fichier app.php. Par exemple, une configuration personnalisée peut être ajoutée à l'application au démarrage : 🎜rrreee🎜 5. Lancer le noyau HTTP/Console 🎜🎜 Ensuite, l'application lance le noyau HTTP ou le noyau de la console, selon la façon dont l'application va l'utiliser. Dans le fichier bootstrap/app.php, nous avons configuré ces deux noyaux : 🎜rrreee🎜Maintenant, l'application est prête à lancer la console ou le runtime HTTP selon les besoins. Dans Laravel, vous pouvez lancer la console via l'outil de ligne de commande Artisan ou l'exécuter sur un serveur Web configuré pour lancer une exécution HTTP. 🎜🎜6. Exécuter la demande de réponse🎜🎜Si vous démarrez l'infrastructure HTTP, lorsque l'utilisateur accède à l'application, la requête entrera dans le fichier public/index.php dans le noyau Laravel. Ce fichier transmet la demande à la méthode de contrôleur appropriée via le système de routage. 🎜🎜En général, le processus de démarrage de Laravel implique de nombreuses étapes, en commençant par le chargement du noyau du framework et en passant par les fournisseurs de services, la logique de démarrage personnalisée et le démarrage du programme de la console et du noyau HTTP. Cette conception orientée processus fait de Laravel un framework très flexible, personnalisable et facile à utiliser pour le développement d'applications de toutes tailles. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn