laravel的kernel

laravel的入口点是public/index.php,该文件包含了autoload.php即自动加载了 一些类,此外获得了application 实例。该实例(bootstrap/app.php)绑定了3个重要接口:

  1. HTTP/Kernel::class; 处理所有的http请求
  2. Console/Kernel::class   处理控制行(命令)的请求,php artisan .........
  3. 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---------
微信分享/微信扫码阅读