【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);
【【Laravel—核心源码解析】(一)入口文件index.php】END
推荐阅读
- 宽容谁
- 我要做大厨
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷