laravel5.5源碼閱讀草稿——路由

laravel 裏的路由是由RouteServiceProvider提供的,其中的boot方法爲啓動項,調用了父類的boot方法。
RouteServiceProvider中的boot方法設置了本身與UrlGenerator類的根命名空間。
經過bootstrap/cache/routes.php處的緩存文件判斷路由是否已緩存,分別從緩存與路由類讀取。
 
給app容器加載booted鉤子函數,函數內執行了RouteCollection類的refreshNameLookups與refreshActionLookups方法,遍歷路由文件,並分別更新name與action列表,action列表存儲調用controller的路由,以下圖 action ['controller']屬性。
 
"HEADtest/{id?}/{ip?}" => Route {#119 ▼
    +uri: "test/{id?}/{ip?}"
    +methods: array:2 [▶]
    +action: array:6 [▼
      "middleware" => array:1 [▶]
      "uses" => "App\Http\Controllers\testController@exportExcel"
      "controller" => "App\Http\Controllers\testController@exportExcel"
      "namespace" => "App\Http\Controllers"
      "prefix" => null
      "where" => []
    ]
    +isFallback: false
    +controller: null
    +defaults: []
    +wheres: []
    +parameters: null
    +parameterNames: null
    +computedMiddleware: null
    +compiled: null
    #router: Router {#25}
    #container: Application {#2}
  }
路由文件裏的route::any等門面類調用的方法,在router類裏調用addRoute方法,將建立好的route對象傳入RouteCollection類裏,存儲在路由字典裏,方便調用
Router建立Route,添加到RouteCollection。
相關文章
相關標籤/搜索