久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      一文講解關(guān)于Laravel kernel實(shí)例化

      下面由Laravel教程欄目給大家介紹關(guān)于Laravel kernel實(shí)例化F,希望對(duì)需要的朋友有所幫助!

      Laravel kernel實(shí)例化

      $kernel = $app->make(IlluminateContractsHttpKernel::class);

      實(shí)例化 Kernel

      在應(yīng)用進(jìn)行實(shí)例化時(shí),已經(jīng)初始化了很多的基礎(chǔ)操作,所以下面的構(gòu)造方法將會(huì)直接使用服務(wù)容器的依賴注入來(lái)解決類之間的依賴關(guān)系。

      // IlluminateContractsHttpKernel 類構(gòu)造器依賴 IlluminateContractsFoundationApplication 和 IlluminateRoutingRouter,將會(huì)通過(guò)服務(wù)容器來(lái)處理依賴關(guān)系 public function __construct(Application $app, Router $router) {     $this->app = $app;      // 主要委托 $router 來(lái)處理     $this->router = $router;     // 以下均為中間件的設(shè)置     $router->middlewarePriority = $this->middlewarePriority;      foreach ($this->middlewareGroups as $key => $middleware) {         $router->middlewareGroup($key, $middleware);     }      foreach ($this->routeMiddleware as $key => $middleware) {         $router->aliasMiddleware($key, $middleware);     } }  IlluminateContractsFoundationApplication 的處理: make 時(shí)通過(guò)別名方式直接調(diào)用 $this->instances['app']  IlluminateRoutingRouter 的處理: make 時(shí)通過(guò)別名方式直接調(diào)用 $this->bindings['router'] 數(shù)組里面 concrete 對(duì)應(yīng)的匿名函數(shù) Router 依賴 IlluminateContractsEventsDispatcher 和 IlluminateContainerContainer public function __construct(Dispatcher $events, Container $container = null) {     $this->events = $events;     $this->routes = new RouteCollection;     $this->container = $container ?: new Container; }  IlluminateContractsEventsDispatcher 的處理: make 時(shí)通過(guò)別名方式直接調(diào)用 $this->bindings['events'] 數(shù)組里面 concrete 對(duì)應(yīng)的匿名函數(shù) Dispatcher 依賴 IlluminateContractsContainerContainer public function __construct(ContainerContract $container = null) {     $this->container = $container ?: new Container; }  IlluminateContainerContainer 的處理: make 時(shí)直接調(diào)用 $this->instances['IlluminateContainerContainer'] = Object(app) IlluminateContractsContainerContainer 的處理: make 時(shí)調(diào)用別名直接調(diào)用 $this->instances['app'] = Object(app) 上面兩個(gè)一樣,沒(méi)有區(qū)別

      注意:以上所列出的依賴關(guān)系,都直接委托給服務(wù)容器進(jìn)行自動(dòng)處理了,不需要怕怕

      對(duì) $this->bindings['router'] 和 $this->bindings['events'] 綁定事件的處理,make 時(shí)將會(huì)直接調(diào)用數(shù)組鍵 concrete 對(duì)應(yīng)的匿名函數(shù)。

      make 時(shí)使用到的代碼片段

      ############################################## 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);  IlluminateRoutingRouter public function __construct(Dispatcher $events, Container $container = null) {     $this->events = $events;     $this->routes = new RouteCollection;     $this->container = $container ?: new Container; }

      返回一個(gè) Router 對(duì)象,同時(shí)會(huì)重置 $this->instances['router'] = $router 對(duì)象,供下次直接調(diào)用。

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

      返回一個(gè) Dispatcher 對(duì)象,同時(shí)會(huì)重置 $this->instances['events'] = $dispatcher 對(duì)象,供下次直接調(diào)用。

      注意:
      kernel對(duì)象是融合了應(yīng)用和路由的對(duì)象,路由又注入了IlluminateEventsDispatcher對(duì)象,此為核心對(duì)象。

      贊(0)
      分享到: 更多 (0)
      ?
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)