千家信息网

Laravel中kernel实例化的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关Laravel中kernel实例化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Laravel kernel实例化$kerne
千家信息网最后更新 2026年11月02日Laravel中kernel实例化的示例分析

这篇文章将为大家详细讲解有关Laravel中kernel实例化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Laravel kernel实例化

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

实例化 Kernel

在应用进行实例化时,已经初始化了很多的基础操作,所以下面的构造方法将会直接使用服务容器的依赖注入来解决类之间的依赖关系。

// \Illuminate\Contracts\Http\Kernel 类构造器依赖 \Illuminate\Contracts\Foundation\Application 和 \Illuminate\Routing\Router,将会通过服务容器来处理依赖关系public function __construct(Application $app, Router $router){    $this->app = $app;    // 主要委托 $router 来处理    $this->router = $router;    // 以下均为中间件的设置    $router->middlewarePriority = $this->middlewarePriority;    foreach ($this->middlewareGroups as $key => $middleware) {        $router->middlewareGroup($key, $middleware);    }    foreach ($this->routeMiddleware as $key => $middleware) {        $router->aliasMiddleware($key, $middleware);    }}\Illuminate\Contracts\Foundation\Application 的处理:make 时通过别名方式直接调用 $this->instances['app']\Illuminate\Routing\Router 的处理:make 时通过别名方式直接调用 $this->bindings['router'] 数组里面 concrete 对应的匿名函数Router 依赖 \Illuminate\Contracts\Events\Dispatcher 和 \Illuminate\Container\Containerpublic function __construct(Dispatcher $events, Container $container = null){    $this->events = $events;    $this->routes = new RouteCollection;    $this->container = $container ?: new Container;}\Illuminate\Contracts\Events\Dispatcher 的处理:make 时通过别名方式直接调用 $this->bindings['events'] 数组里面 concrete 对应的匿名函数Dispatcher 依赖 \Illuminate\Contracts\Container\Containerpublic function __construct(ContainerContract $container = null){    $this->container = $container ?: new Container;}\Illuminate\Container\Container 的处理:make 时直接调用 $this->instances['Illuminate\Container\Container'] = Object(app)\Illuminate\Contracts\Container\Container 的处理:make 时调用别名直接调用 $this->instances['app'] = Object(app)上面两个一样,没有区别

注意:以上所列出的依赖关系,都直接委托给服务容器进行自动处理了,不需要怕怕

对 $this->bindings['router'] 和 $this->bindings['events'] 绑定事件的处理,make 时将会直接调用数组键 concrete 对应的匿名函数。

make 时使用到的代码片段

##############################################if ($concrete instanceof Closure) {                return $concrete($this, end($this->with)); }###############################################$this->bindings['router'] = [        'concrete' => function ($app) {                            return new Router($app['events'], $app);                        },        'shared' => 'true',    ];$router = new Router($app['events'], $app);\Illuminate\Routing\Routerpublic function __construct(Dispatcher $events, Container $container = null){    $this->events = $events;    $this->routes = new RouteCollection;    $this->container = $container ?: new Container;}

返回一个 Router 对象,同时会重置 $this->instances['router'] = $router 对象,供下次直接调用。

$this->bindings['events'] = [    'concrete' => function ($app) {            return (new Dispatcher($app))->setQueueResolver(function () use ($app) {                return $app->make(QueueFactoryContract::class);            });            }    'shared' => 'true',];$dispatcher = (new \Illuminate\Events\Dispatcher($app))->setQueueResolver(function () use ($app) {                return $app->make(QueueFactoryContract::class);            });Illuminate\Events\Dispatcher:public function __construct(ContainerContract $container = null){    $this->container = $container ?: new Container;}public function setQueueResolver(callable $resolver){    $this->queueResolver = $resolver;    return $this;}

返回一个 Dispatcher 对象,同时会重置 $this->instances['events'] = $dispatcher 对象,供下次直接调用。

注意:
kernel对象是融合了应用和路由的对象,路由又注入了IlluminateEventsDispatcher对象,此为核心对象。

关于"Laravel中kernel实例化的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

处理 对象 实例 别名 函数 容器 数组 方式 篇文章 服务 示例 分析 同时 更多 路由 委托 应用 不错 实用 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技有限公司 美国互联网科技巨头监管 金诺互联网科技 猪兼强互联网科技 西安互联网科技 广西互联网科技公司 互联网科技汛 恒生科技互联网指数分析 哈尔滨新华互联网科技学院 互联网时代科技改变生活 中国科技创新与世界互联网大会 迪庆互联网科技招生 南博望互联网科技有限公司 滨湖区互联网智能科技产品有哪些 富国互联网金融科技混合基金 互联网科技融合创新 半导体行业属于互联网高科技类吗 南京一网一红互联网科技有限公司 山东大美朱楼互联网科技有限公司 互联网大会出现的黑科技 互联网科技活动banner 互联网公司 科技公司 碳银互联网科技有限公司 天扬科技互联网广告 中盈科技互联网信息有限公司 互联网校园科技培训 语蝶互联网科技有限公司 中国互联网十大科技股排名 互联网营销推广黑科技 互联网科技大会大佬
0