【再读lara】生命周期 ~ 核心类实例化

通过服务容器实例化App\Http\Kernel类时,这个类只是定义了$middleware(中间件)和$routeMiddleware(路由中间件)两个数组属性,其中中间件是请求进入路由处理前的处理类,而路由中间件是请求进入路由处理后的处理类,所以这里可以添加新的中间件处理类,只要按照中间件的设计原则进行设计,并在中间件数组的正确位置添加类名,在处理请求的过程中就会调用新添加的中间件处理过程。

Illuminate\Container\Container.php
    /**
     * Register a shared binding in the container.
     *
     * @param  string|array  $abstract
     * @param  \Closure|string|null  $concrete
     * @return void
     */
    public function singleton($abstract, $concrete = null)
    {
        $this->bind($abstract, $concrete, true);
    }


$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);


Illuminate\Foundation\Http\Kernel.php
 //创建一个新的HTTP核心类实例
public function __construct(Application $app, Router $router)
{
        $this->app = $app;
        $this->router = $router;
        foreach ($this->routeMiddleware as $key => $middleware) {
            $router->middleware($key, $middleware);
        }
}

Kernel类的构造函数是存在依赖的
Illuminate\Contracts\Foundation\Application
Illuminate\Routing\Router

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 先说几句废话,调和气氛。事情的起由来自客户需求频繁变更,伟大的师傅决定横刀立马的改革使用新的框架(created ...
    wsdadan阅读 8,274评论 0 12
  • Laravel框架一:原理机制篇 Laravel作为在国内国外都颇为流行的PHP框架,风格优雅,其拥有自己的一些特...
    Mr_Z_Heng阅读 9,240评论 0 13
  • Laravel核心概念 PHP的生命周期 万物皆有生命,每个生命都有自己的生命周期。 Laravel是什么?一个P...
    赵客缦胡缨v吴钩霜雪明阅读 5,490评论 0 32
  • 过去做事情急,什么东西拿起来就用,不喜欢进行系统性的学习,造成在使用过程中的错误和低效,现在感觉自己耐心多了,用之...
    马文Marvin阅读 6,133评论 0 10
  • 简介 laravel 使实施认证的变得非常简单,事实上,它提供了非常全面的配置项以适应应用的业务。认证的配置文件存...
    Dearmadman阅读 11,366评论 2 13

友情链接更多精彩内容