zoukankan      html  css  js  c++  java
  • 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" => "AppHttpControllers	estController@exportExcel"
          "controller" => "AppHttpControllers	estController@exportExcel"
          "namespace" => "AppHttpControllers"
          "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。
  • 相关阅读:
    Java8 新特性(一)- Lambda 表达式
    省选知识复习
    [JSOI2016]灯塔/[POI2011]Lightning Conductor
    [十二省联考2019]春节十二响
    [tyvj1858]XLKxc
    [CF995F]Cowmpany Cowmpensation
    [集训队互测]calc
    拉格朗日插值法入门
    [TJOI2017]异或和
    [noi.ac省选模拟赛]第12场题解集合
  • 原文地址:https://www.cnblogs.com/wyycc/p/9601960.html
Copyright © 2011-2022 走看看