当前位置: 首页 > 后端技术 > PHP

Laravel运行机制简析

时间:2023-03-29 18:57:24 PHP

一、预备知识1.1Composer基本用法1.1.1参考文章Composer基本用法1.1.2所需知识点Composer依赖管理Composer自动加载(重点)1.2DIP、IOC、DI、IOC容器详解二、Laravel运行机制分析2.1场景示例:http://laravel.com/test?name=chenxuelong2.2运行机制2.2.1前提以下路径都是相对于Laravel根目录的。2.2.1文public/index.php:注册Composer自己自动加载`InstantiateIlluminate\Foundation\Application类设置框架路径注册app单例(指向Application)注册Illuminate\Container\Container单例,指向ApplicationRegister基础服务提供者Event服务提供者(EventServiceProvider)日志服务提供者(LogServiceProvider)路由服务提供者(RoutingServiceProvider)注册核心类别名注册App\Http\Kernel单例注册App\Console\Kernel单例注册App\Exceptions\Handler单例获取注册App\Http\Kernel单例设置路由中间件组设置路由中间件调用Illuminate\Http\Request的capture方法,返回Illuminate\Http\Request实例调用handle方法,传入Request实例,返回response(Illuminate\Http\response)enable_method请求参数确定预期的HTTP方法RegisterrequestSingleton清除注册的请求实例启动wrapper(即:加载配置文件中定义的数据)加载环境变量加载配置文件异常处理RegisterFacades注册服务提供者运营商启动服务提供者中间件,核心中间件中间件组,对应的类型(web或api)中间件组routeMiddleware,以及可选的路由中间件(用户决定是否启用,注入模型的启动顺序由用户自由调节)可选,实例化模型可选:实例化表单验证类,并执行验证。controller返回view,调用response的send方法,自定义responseheader结束客户端请求,输出response(详见:fastcgi_finish_request函数)。后续输出会丢失(除非写入日志)调用App\Http\Kernel的terminate方法执行程序结束回调