Laravel框架执行流程

本文详细介绍了Laravel框架的执行流程,从入口文件index.php开始,包括引入autoload.php和app.php,创建容器,执行HTTP内核,中间件处理,路由解析,控制器实例化,到最后返回响应。重点解析了Laravel的中间件执行顺序,尤其是如何解决在控制器构造函数中无法获取session的问题。同时,文章探讨了Laravel中广泛使用的后期静态绑定技术及其在Facades类中的应用。
摘要由CSDN通过智能技术生成

俗话说知己知彼百战不怠,使用Laravel也有有一段时间了,中间也踩了很多坑,碰了很多壁,归根结底还是对Laravel的底层不太了解,以前使用Thinkphp养成的MVC的习惯,刚接触Laravel一时还没转变过来,所以最近抱着学习的态度,研究了下Laravel框架的执行流程。
Laravel虽然使用上感觉跟Thinkphp差不多,但是底层的实现方式还有框架的架构,跟Thinkphp差别还是蛮大,不过Tp5貌似吸收了很多Laravel中的特性。
废话到此为止,下面上干货

1. 入口文件index.php

1. 引入bootstrap/autoload.php,自动加载依赖库
2. 引入bootstrap/app.php’
  1. 创建容器$app
// 参数为应用程序根目录
$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../') 
);
  1. 该类是框架核心类,负责启动框架,以及调动其他类提供的功能。
  2. 该类继承了Illuminate\Container\Container类,可见该类也是个容器。是整个框架最大的容器;
  3. 该类的构造器代码如下:

public function __construct($basePath = null)
{
    if ($basePath) {
        // 设置应用程序根目录
        $this->setBasePath($basePath);
    }

    // 注册基础绑定服务
    // 1. 设置当前类为容器实例
    // 2. 设置实例别名为app
    $this->registerBaseBindings();


    // 注册基础服务提供商
    // 1. 注册事件服务提供商
    // 2. 注册日志服务提供商
    // 3. 注册路由服务提供商
    $this->registerBaseServiceProviders();


    // 注册核心容器别名
    // 为一些核心类设置别名,
    // 存储在父类的$aliases和abstractAliases属性数组中。
    
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值