【Laravel—核心源码解析】(一)入口文件index.php

前言

Larave作为近年来最流行的PHP框架之一,在目前的工作中也是使用比较频繁的框架,功能十分全面。框架底层封装思想先进,使用了很多PHP的新特性,以核心的服务容器展开,对服务进行启动注册,使用时注入,进行解耦,注重代码的组件化和可扩展性,提供门面(外观)模式在开发时能够更优雅的调用所需服务。是一款很值得研究的PHP框架,在源码学习的过程中还是有遇到不少难题,这个系列文章就通过自己的学习积累,记录下要点,方便进行后续回顾;

其它

材料:Laravel6.0
安装:Composer 使用Composer安装Laravel

Laravel框架的功能点很多,这个系列的文章还是针对核心流程源码的解析进行记录,仅推荐对Laravel常规使用已经了解但需探索源码的朋友进行观看。因为框架源码跳动性比较大,所以核心源码解析系列进行大流程上的注释描述,一些重要且频繁使用的功能会单独写文章进行具体描述。如果错误烦请留言区纠正;

正文

首先先了解框架的重要思想:依赖注入、控制反转、服务容器、服务提供者
其次再了解服务容器常用方法:服务容器绑定篇、服务容器解析篇

Laravel的入口文件index.php默认是放在根目录中的public目录下,下面直接贴源码(这里及后续附上的都是删除官方注释,以及非主要流程后的源码)以注释的方式进行概述,具体的功能会再后续的文章中进行详细描述

//设置框架启动时间(Unix 时间戳)
define('LARAVEL_START', microtime(true));
//引入Composer注册自动加载程序, Laravel的自动类文件自动加载等功能都是通过Composer来实现的
require __DIR__.'/../vendor/autoload.php';

对应解析->Composer注册自动加载

//引入核心应用类, 主要是实现核心类库加载以及Laravel框架中核心的服务容器注册加载等
$app = require_once __DIR__.'/../bootstrap/app.php';

对应解析->核心应用容器类Application

//获取在app.php中已经注册的Kernel
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

//TODO 停更一段时间

//容器中绑定的Kernel是App\Http下的,该类继承了Illuminate\Foundation\Http下的Kernel,这里调用的就是父类的handle方法
//主要实现的功能是通过管道实现中间件及路由分发执行
$response = $kernel->handle(
    //创建request实例
    $request = Illuminate\Http\Request::capture()
);
//响应请求
$response->send();
//响应中间件
$kernel->terminate($request, $response);

END

你可能感兴趣的:(【Laravel—核心源码解析】(一)入口文件index.php)