laravel框架执行流程是怎样的
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"laravel框架执行流程是怎样的",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"laravel框架执行流程是怎样的"吧!1.ind
千家信息网最后更新 2026年11月02日laravel框架执行流程是怎样的
这篇文章主要讲解了"laravel框架执行流程是怎样的",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"laravel框架执行流程是怎样的"吧!
1.index.php
$app = require_once __DIR__.'/../bootstrap/app.php';$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);$response = $kernel->handle( $request = Illuminate\Http\Request::capture());
2.进入app.php
$app = new Illuminate\Foundation\Application( $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__));$app->singleton( Illuminate\Contracts\Http\Kernel::class, App\Http\Kernel::class);
Application 类绑定基本类到容器
Kernel 类执行路由分发加载控制器等操作
3.进入 Kernel.php
// 全局路由中间件,每次执行都会执行protected $middleware = [];// 中间件路由分组,protected $middlewareGroups = [];// 中间件别名,可以单独使用也可以分配给组protected $routeMiddleware = [];// 中间件排序protected $middlewarePriority = [];
kernel 类继承 Illuminate\Foundation\Http\Kernel 类
4.进入 Illuminate\Foundation\Http\Kernel 类
//http方法参数覆盖,也就是 X-HTTP-METHOD-OVERRIDE 中有参数,就按照这个里面的走,如果没有,那就是post$request->enableHttpMethodParameterOverride();// 通过中间件/路由器发送给定的请求。$response = $this->sendRequestThroughRouter($request);// 触发事件并呼叫听众 韩注:触发观察者$this->app['events']->dispatch(new Events\RequestHandled($request, $response));return $response;
进入 sendRequestThroughRouter 方法
// 注册请求类到容器中 $this->app->instance('request', $request);// 从facade根实例 中删除共享实例Facade::clearResolvedInstance('request');// 启动引导类 protected $bootstrappers = []; 引导类都在这个数组中$this->bootstrap();// 通过管道模式执行最终结果,切面编程,aop return (new Pipeline($this->app)) // 设置通过管道发送的对象 ->send($request) // 设置管道阵列。 // shouldSkipMiddleware 判断是否应该跳过中间件,$this->make('middleware.disable') 设置为true // $this->bound('middleware.disable') 设置为true 应该可以跳过 所有中间件,不知道这么做的好处是什么? ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware) // 使用最终目标回调运行管道,最终需要运行的结果 ->then($this->dispatchToRouter());进入 dispatchToRouter 路由分发 ,最终由路由类中 dispatch 执行路由,并实现注入
$this->router->dispatch($request);
利用反射原理实现依赖注入 Illuminate\Container\Container 类中
public function make($abstract, array $parameters = []){ return $this->resolve($abstract, $parameters);}public function build($concrete)// build 中$reflector = new ReflectionClass($concrete);依赖注入通过 $parameter->getClass() 知道是什么类
class Demo{ public function store(Request $req333, $abc){ }}class Request{}$method = new ReflectionMethod('Demo', 'store');foreach ($method->getParameters() as $parameter) { // 获取参数的限制类的类型 $param_type = $param->getClass(); //获取当前注入对象的类型提示 $param_value = $param->getName(); //获取参数名称 if ($param_type) { // 通过类的类型限制名称中提取容器中的实例 $avgs[] = $app[$param_type->name]; }}$reflect->invokeArgs($app['demo'], $avgs);感谢各位的阅读,以上就是"laravel框架执行流程是怎样的"的内容了,经过本文的学习后,相信大家对laravel框架执行流程是怎样的这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
中间件
路由
框架
流程
参数
管道
实例
容器
类型
学习
内容
名称
对象
就是
方法
结果
运行
限制
也就是
事件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网络科技
蓝思科技飞鸽互联网
互联网科技公司税收优惠
互联网品科技
互联网巨头科技公司
华宇互联网科技
奇酷互联网科技公司
汇久创客互联网科技
左右互联网络科技
银川新华互联网科技学校地址
青岛中康互联网医疗科技有限公司
深圳前海聚择互联网科技有限公司
成都互联网科技公司100强
宜昌元轩互联网科技有限公司
区块链结合互联网科技
昆明中奇联合互联网科技
福仕德教育科技互联网
三亚科技创新互联网基地
陕西彩京云互联网科技有限公司
平安好医生打造互联网科技医疗
咖啡网
互联网络科技
紫鲸互联网科技
金融科技和互联网金融
互联网教育科技公司vipkid
常德市电业局互联网科技部
上海科技产业互联网平台
深圳互联网科技的发展
上海乐五互联网科技有限公司
好易买互联网科技