laravel的kernel
laravel的入口点是public/index.php,该文件包含了autoload.php即自动加载了 一些类,此外获得了application 实例。该实例(bootstrap/app.php)绑定了3个重要接口:
- HTTP/Kernel::class; 处理所有的http请求
- Console/Kernel::class 处理控制行(命令)的请求,php artisan .........
- Exceptions/Handle::class 异常处理
HTTP Kernel扩展了Illuminate\Foundation\Http\Kernel,我感觉这有点像Django的钩子函数,用来实现处理请求前和请求后的一些功能。
它封装了这个类似钩子的类,用来处理一个完整的HTTP 请求,接受HTTP 请求,返回HTTP响应。
之前研读过Django的代码,Django在接受一个请求后,会进行路由的dispatcher,然后调用相应的视图函数。kernel是将Django app的__call__方法给单独分出来了,kernel来实现所有功能。然后laravel的实例app来绑定这个类。
在kernel初始化的过程,进行了env,config等配置文件的加载。
一篇比较好的laravel流程分析: Laravel生命流程和源码分析
路由加载,注册的文章: Laravel核心解读——路由原理
--------EOF---------
微信分享/微信扫码阅读
微信分享/微信扫码阅读