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

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

Apr 23, 2023 am 09:10 AM

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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravel Frameworkのインストール最新方法 Laravel Frameworkのインストール最新方法 Mar 06, 2025 pm 01:59 PM

Laravel Frameworkのインストール最新方法

Laravelで高度な機能を備えたRESTFUL APIを構築する方法は? Laravelで高度な機能を備えたRESTFUL APIを構築する方法は? Mar 11, 2025 pm 04:13 PM

Laravelで高度な機能を備えたRESTFUL APIを構築する方法は?

Laravel-Adminメニュー管理 Laravel-Adminメニュー管理 Mar 06, 2025 pm 02:02 PM

Laravel-Adminメニュー管理

Laravelのバージョンは最高です Laravelのバージョンは最高です Mar 06, 2025 pm 01:58 PM

Laravelのバージョンは最高です

LaravelでOAUTH2認証と承認を実装する方法は? LaravelでOAUTH2認証と承認を実装する方法は? Mar 12, 2025 pm 05:56 PM

LaravelでOAUTH2認証と承認を実装する方法は?

クラウドネイティブ環境でLaravelを使用するためのベストプラクティスは何ですか? クラウドネイティブ環境でLaravelを使用するためのベストプラクティスは何ですか? Mar 14, 2025 pm 01:44 PM

クラウドネイティブ環境でLaravelを使用するためのベストプラクティスは何ですか?

Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか? Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか? Mar 17, 2025 pm 02:50 PM

Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか?

Laravelでカスタム検証ルールを作成して使用するにはどうすればよいですか? Laravelでカスタム検証ルールを作成して使用するにはどうすればよいですか? Mar 17, 2025 pm 02:38 PM

Laravelでカスタム検証ルールを作成して使用するにはどうすればよいですか?

See all articles