Laravel ライフサイクルについて簡単なまとめ

Table of Contents

Table of Contents

この記事では、Laravelのライフサイクルについて自分なりにまとめてみたものです。Kernel, Middleware, ServiceProvider, Routeも紹介します。Laravelの勉強をする際に、全体像を理解して、アプリケーションのライフサイクルを把握した上で、何かしらのフレームワーク機能を改善したり、ベースになる処理を調査したり時に役に立つと思います。

Laravel ライフサイクル

まずは、アプリへのリクエストのエンドポイントです。それはpublic/index.phpになります。
index.phpでやっている事としては、

  1. アプリケーションがメンテナンスであるかを確認する。
  2. Composer オートローダーを実行する。
  3. bootstrap/app.phpを登録する。

次はbootstrap/app.phpについて、少しみていきます。

bootstrap/app.php

ソースコードを見ると、Exception HandlerHttp KernelConsole Kernelというアプリの核心になるインターフェイスの登録をしていることがわかりました。
Exception Handlerはリクエストの例外などの処理を対応している部分です。これを一旦置いて、ライフサイクルに重要なKernelの部分をみていきたいです。

Kernel

アプリケーションへのリクエストをHTTP KernelConsole Kernelに送信します。

  • HTTP Kernel: 場所はapp/Http/Kernel.phpになる。HTTPリクエストを対応する。
  • Console Kernel: 場所はapp/Console/Kernel.phpになる。

Http Kernelでは、middleware リストを定義します。例えば、 http session, csrf token ...など。
その中に、Routeに関連するミドルウェアリストも定義できます。

  • $routeMiddleware: アプリのルートミドルウェアリスト
  • $middlewareGroups: アプリのルートミドルウェアグループリスト

続いて、Kernel内に重要なserviceProviderについて、紹介します。

サービスプロバイダ

Kernelを起動する際に、サービスプロバイダをロードします。
サービスプロバイダは、アプリケーションフレームワークのコンポーネント(DB、Routing、Validation、Queueなど)を初期起動する役目を持っています。
config/app.phpにはprovider リストを定義します。
プロバイダファイルはApp/Providers/の配下に管理されている。
ルートに関連するサービスプロバイダはRouteServiceProviderになります。少しみていきます。

RouteServiceProvider

ファイル場所はApp/Providers/RouteServiceProviderになります。
中身処理には、自動的にroutes/web.phproutes/api/phpルート設定をロードしています。
なので、ウェブページはwebで、データを返すのはapiで、それぞれ対応することができます。

まとめ

関係図としては、public/index.php -> bootstrap/app.php -> ServiceProvider -> routes/web.phproutes/api/php

参考資料

laravel.com:Request Lifecycle