入口文件
一个常规的laravel
应用的所有请求都是向public\index.php
发起的,在public/index.php
中完成了如下任务:
- 注册类的自动加载,这个是通过
Composer
生成的加载器实现的。 - 创建应用并绑定重要接口,这一操作在
bootstrap\app.php
中进行。 - 上一步绑定的接口中包含了对核心
Http
和Console
,访问请求将会根据类型发送给他们中的一个,接下来以Http
为例来进行分析。
请求预处理
-
Http
的处理核心在App\Http\Kernel.php
中,这是一个继承了Illuminate\Foundation\Http\Kernel
的类。类中定义了请求处理之前要执行的任务,包括错误处理和日志的配置等。 -
Http
核心还定义了一些在请求执行前执行的中间件,这些中间件包括对session
的读写和跨站请求验证等。 -
Http
核心接受HTTP
请求并返回HTTP
响应。 - 在
Http
启动操作中最重要的是加载service providers
,首先会在所有providers
上执行register
,所有providers
都注册好后会执行boot
方法。
分发请求
- 应用程序启动并且所有的
service providers
都注册好后,请求就会被交给路由。 - 路由会根据定义将请求交给指定的控制器的指定的方法或者直接按照定义进行相关处理。
- 处理结果会已页面的形式展示出来或者直接返回指定格式的数据。
本文首发于公众号:programmer_cc,转载请注明出处。
微信公众号.jpg
网友评论