久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放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. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

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

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

      Laravel kernel實例化

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

      實例化 Kernel

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

      // IlluminateContractsHttpKernel 類構(gòu)造器依賴 IlluminateContractsFoundationApplication 和 IlluminateRoutingRouter,將會通過服務(wù)容器來處理依賴關(guān)系 public function __construct(Application $app, Router $router) {     $this->app = $app;      // 主要委托 $router 來處理     $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 時通過別名方式直接調(diào)用 $this->instances['app']  IlluminateRoutingRouter 的處理: make 時通過別名方式直接調(diào)用 $this->bindings['router'] 數(shù)組里面 concrete 對應(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 時通過別名方式直接調(diào)用 $this->bindings['events'] 數(shù)組里面 concrete 對應(yīng)的匿名函數(shù) Dispatcher 依賴 IlluminateContractsContainerContainer public function __construct(ContainerContract $container = null) {     $this->container = $container ?: new Container; }  IlluminateContainerContainer 的處理: make 時直接調(diào)用 $this->instances['IlluminateContainerContainer'] = Object(app) IlluminateContractsContainerContainer 的處理: make 時調(diào)用別名直接調(diào)用 $this->instances['app'] = Object(app) 上面兩個一樣,沒有區(qū)別

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

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

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

      返回一個 Router 對象,同時會重置 $this->instances['router'] = $router 對象,供下次直接調(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; }

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

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

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