ホームページ > 記事 > PHPフレームワーク > Laravel のライフサイクルについての予備的な理解
Laravel のチュートリアルコラムでは、Laravel のライフサイクルを予備的に理解することができますので、困っている友人のお役に立てれば幸いです。
さらに詳しく説明します:
ステップ 1: Composer によって自動的に生成されたクラス ローダーを登録してロードします。 サードパーティの依存関係をロードして初期化します。 ステップ 2: コンテナーの生成 コンテナー コアコンポーネントをコンテナに登録するには、bootstrap/app.php スクリプトから Laravel アプリケーションインスタンスを取得します。3 番目のステップ: このステップが中心で、リクエストを処理し、レスポンスを生成します。 リクエストは、アプリケーションに受信されるリクエストのタイプに応じて、HTTP コアまたはコンソール コアに送信されます。リクエストがブラウザ経由かコンソール経由かによって異なります。ここでは主にブラウザ経由でリクエストします。 HTTP カーネルの象徴的なメソッドであるハンドル処理のロジックは非常に単純です。リクエストを取得し、レスポンスを返します。カーネルをアプリケーション全体を表す大きなブラック ボックスとして想像し、HTTP リクエストを入力し、HTTP レスポンスを返します。
HTTP 内核继承自 Illuminate\Foundation\Http\Kernel 类,该类定义了一个 bootstrappers 数组,这个数组中的类在请求被执行前运行,这些 bootstrappers 配置了错误处理、日志、检测应用环境以及其它在请求被处理前需要执行的任务。
protected $bootstrappers = [ //注册系统环境配置 (.env) 'Illuminate\Foundation\Bootstrap\DetectEnvironment', //注册系统配置(config) 'Illuminate\Foundation\Bootstrap\LoadConfiguration', //注册日志配置 'Illuminate\Foundation\Bootstrap\ConfigureLogging', //注册异常处理 'Illuminate\Foundation\Bootstrap\HandleExceptions', //注册服务容器的门面,Facade 是个提供从容器访问对象的类。 'Illuminate\Foundation\Bootstrap\RegisterFacades', //注册服务提供者 'Illuminate\Foundation\Bootstrap\RegisterProviders', //注册服务提供者 `boot` 'Illuminate\Foundation\Bootstrap\BootProviders', ];
注意顺序:
Facades 先于ServiceProviders,Facades也是重点,后面说,这里简单提一下,注册 Facades 就是注册 config\app.php中的aliases 数组,你使用的很多类,如Auth,Cache,DB等等都是Facades;而ServiceProviders的register方法永远先于boot方法执行,以免产生boot方法依赖某个实例而该实例还未注册的现象。HTTP 内核还定义了一系列所有请求在处理前需要经过的 HTTP 中间件,这些中间件处理 HTTP 会话的读写、判断应用是否处于维护模式、验证 CSRF 令牌等等。
在Laravel基础的服务启动之后,就要把请求传递给路由了。路由器将会分发请求到路由或控制器,同时运行所有路由指定的中间件。
传递方式: 传递给路由是通过 Pipeline(管道)来传递的,但是Pipeline有一堵墙,在传递给路由之前所有请求都要经过,这堵墙定义在app\Http\Kernel.php中的$middleware数组中,没错就是中间件,默认只有一个CheckForMaintenanceMode中间件,用来检测你的网站是否暂时关闭。这是一个全局中间件,所有请求都要经过,你也可以添加自己的全局中间件。
然后遍历所有注册的路由,找到最先符合的第一个路由,
经过该路由中间件,进入到控制器或者闭包函数,执行你的具体逻辑代码。
所以,当请求到达你写的代码之前,Laravel已经做了大量工作,请求也经过了千难万险,那些不符合或者恶意的的请求已被Laravel隔离在外。
原文地址:https://juejin.cn/post/6992208648575385607
作者:卡二条
相关推荐:最新的五个Laravel视频教程
以上がLaravel のライフサイクルについての予備的な理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。