Laravel 之初次相识
生命周期概述
- 请求的入口是
public/index.php
文件。Nginx
配置定向到此文件。加载Composer
生成的自动加载器定义。从bootstrap/app.php
中检索 Laravel 应用程序的实例。 - 根据进入应用的请求类型,传入的请求将被发送到 HTTP 内核。定义了一个 HTTP 中间件 列表。否处于维护模式,校验
CSRF
令牌。接收Request
接口并返回Response
接口。 - 服务提供者。最重要的内核引导操作之一是为应用程序加载
服务提供者
。应用程序的所有服务提供程序都在config/app.php
文件中的providers
数组。 - 路由。应用程序中最重要的服务提供者之一是
App\Providers\RouteServiceProvider
。如果请求通过了所有匹配路由分配的中间件,则执行路由或控制器方法,并通过路由的中间件链路返回路由或控制器方法的响应。 - 一旦路由或控制器方法返回一个响应,该响应将通过路由的中间件返回,从而使应用程序有机会修改或检查传出的响应。最后,一旦响应通过中间件返回,HTTP 内核的
handle
方法将返回响应对象,并且index.php
文件在返回的响应上调用send
方法。send
方法将响应内容发送到用户的 web 浏览器。至此,我们已经完成了整个 Laravel 请求生命周期的旅程。
服务容器
Laravel 服务容器是一个用于管理类依赖以及实现依赖注入的强有力工具。
指:通过构造函数,或者某些情况下通过 setter
方法将类依赖 注入
到类中。
服务提供者
- 服务提供者是所有 Laravel 应用程序的引导中心。你的应用程序,以及通过服务器引导的 Laravel 核心服务都是通过服务提供器引导。
- 我们可以理解为
注册
,比如注册服务容器绑定,事件监听器,中间件,甚至是路由。服务提供者是配置应用程序的中心。 - 当你打开 Laravel 的
config/app.php
文件时,你会看到providers
数组。
数组中的内容是应用程序要加载的所有服务提供者的类。当然,其中有很多 延迟
提供者,他们并不会在每次请求的时候都加载,只有他们的服务实际被需要时才会加载。
门面
在 Laravel 中,门面是为应用服务容器中的绑定类提供的一个 静态
接口。
维护时能够提供更加易于测试、更加灵活、简明优雅的语法,所有的门面都定义在 Illuminate\Support\Facades
命名空间下。
注意:在使用 Facade
时必须小心。Facade
的主要危险是 范围溢出
。