路由:在route目录下的route.php文件定义路由规则,也可以在route目录下自定义路由文件,都会进行路由解析,路由定义:Route::rule('路由表达式','路由地址','请求方式'),或者Route::get('路由表达式','路由地址');Route::post('路由表达式','路由地址');
路由地址:
(1)[模块/控制器]/操作:index/index/hello, 该方式是从操作开始解析,再解析控制器,最后解析模块
(2)路由到操作方法: @index/index/hello, 该方式直接执行某个控制器类的方法,而不需要去解析 模块/控制器/操作这些,同时也不会去初始化模块(因此不会调用模块的初始化方法),通常这种方式下面,由于没有定义当前模块名、当前控制器名和当前方法名 ,从而导致视图的默认模板规则失效,所以这种情况下面,如果使用了视图模板渲染,则必须传入明确的参数而不是留空。
(3) 路由到类的方法: 路由地址的格式为(动态方法):\类的命名空间\类名@方法名 或者(静态方法)\类的命名空间\类名::方法名;
\app\index\controller\index@hello 或者 \app\index\controller\index::hello
(4)重定向:重定向的外部地址必须以“/”或者http开头的地址。默认是301永久重定向
(5)路由到模板:Route::view('路由表达式','路由地址'); 路由地址:index@hello ,表示index模块下view目录下的hello.html文件.
(6)闭包:function(){return 'hello, world';}
路由缓存:在应用配置app.php文件中开启route_check_cache = true,在调试模式下路由缓存没有作用,且使用闭包路由地址的,也不会使用路由缓存.开启后,会自动对每次的路由请求的调度进行缓存,第二次如果是相同的请求则无需再次经过路由解析,而是直接进行请求调度。路由缓存生成在runtime目录下的cache子目录里,使用命令行代码可以删除路由缓存: php think clear --route.