ホームページ  >  記事  >  PHPフレームワーク  >  laravelの起動プロセスとは何ですか

laravelの起動プロセスとは何ですか

PHPz
PHPzオリジナル
2023-04-23 09:10:50799ブラウズ

Laravel は人気のある PHP オープン ソース フレームワークであり、その起動プロセスは他のフレームワークと似ており、特定の準備が必要です。この記事ではLaravelの起動手順を詳しく紹介します。

1. エントリーファイルindex.php

Laravelのエントリーファイルはindex.phpで、すべてのリクエストはこのファイルを通じてフレームワークに入ります。 Index.php では、次のコード セグメントが確認できます:

/*
|--------------------------------------------------------------------------
| 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';

このコメントは、コードの機能を説明しています。また、require_once が、Laravel の起動である bootstrap/app.php ファイルを導入していることもわかります。 。 書類。

2. 起動ファイル bootstrap/app.php

app.php ファイルでは、主に $app、$kernel、$router という 3 つの主要なクラスのインスタンス化が確認できます。以下に一つずつ紹介していきましょう。

  1. $app

$app は Illuminate\Foundation\Application クラスのインスタンスであり、フレームワーク全体の中核であり、Laravel アプリケーションのコンテナを管理します。ルーティング、リクエスト処理、イベント、Cookie、セッション、例外処理などの多くの強力な機能を提供します。次に、$app がどのように初期化されるかを見てみましょう。

$app のコンストラクターでは、まず Illuminate\Container\Container クラスを継承し、コンテナー インスタンスを生成します。このコンテナ インスタンスでは、必要なサービスをバインドして注入できます。

次に、ルーティング、ログ、ビューなど、Laravel のすべてのコアコンテナサービスを登録します。

最後に、config ディレクトリに保存されている Laravel 設定ファイルを読み込み、$app インスタンスのプロパティに置きます。

  1. $kernel

$kernel は、Illuminate\Contracts\Http\Kernel インターフェイスのインスタンスです。Laravel の HTTP コアであり、すべての HTTP の処理を​​担当します。リクエスト (requests). リクエストとレスポンスの間の橋渡し。 $kernel の主な機能は、要求されたミドルウェアを呼び出し、要求をルーターに渡し、最後に応答をクライアントに渡すことです。

$app がインスタンス化されると、$app->make() メソッドが呼び出され、コンテナー解決を通じて $kernel インスタンスが取得されます。このプロセスでは、$app のコンテナーは $config['app']['middleware'] 構成を解析してミドルウェアを登録し、そのミドルウェアを $kernel のインスタンスに保存します。

  1. $router

$router は、Laravel のルーターであり、すべてのルートの解析と配布を処理する Illuminate\Routing\Router クラスのインスタンスです。 $router の主な機能は、リクエストと対応する操作を照合し、リクエストに対して処理されるルートをリクエスト インスタンスのプロパティに保存することです。

$app がインスタンス化されると、対応する設定を使用してルーター インスタンスを生成し、$app インスタンスのインスタンス メソッドを通じて Laravel コンテナに登録します。

さらに、$app は、ミドルウェア、ルーティング、コントローラーで使用できるように、リクエスト インスタンスとその他の関連インスタンスをコンテナーにバインドすることにも注意してください。コンテナのバインドが完了すると、Laravel の準備作業は完了です。

3. リクエストのスケジューリング

Laravel では、リクエストのスケジューリング プロセスは次のとおりです:

1. クライアントから HTTP リクエストを開始します。

2. リクエストはまず Laravel の public/index.php ファイルを通過し、bootstrap/app.php ファイルに転送されます。

3. bootstrap/app.php ファイルで、Laravel は $app、$kernel、$router のインスタンスを生成し、リクエスト インスタンスをコンテナにバインドします。その後、$app は $kernel のハンドル メソッドを呼び出してリクエストを処理します。

4. $kernel の handle メソッドで、Laravel は登録されたミドルウェアをコンテナ経由で解析して順番に呼び出し、リクエストをルーターに転送します。

5. ルーターでは、Laravel がリクエストから URI を抽出し、それをルーター インスタンスで定義されているすべてのルートと照合します。一致するルートが見つかった場合、Laravel は適切なコントローラーに制御を渡します。

6. コントローラーはリクエストのメイン ハンドラーであり、ビジネス ロジック コードを呼び出してリクエストを処理し、最終的に結果を応答としてクライアントに返します。

7. ルーターが一致するルートを見つけられない場合、リクエストをエラー ハンドラーに渡します。

8. エラー ハンドラーでは、Laravel は対応する応答を生成し、エラーの種類と設定に基づいてクライアントに返します。

上記は、Laravel リクエストの完全なプロセスです。 Laravel の起動プロセスとリクエストのスケジューリング プロセスを深く理解することで、Laravel の内部アーキテクチャと動作原理をより深く理解し、ビジネスを処理するためにそれをより適切に使用できるようになります。

以上がlaravelの起動プロセスとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。