路由地址
一、什么是路由地址?
路由地址,就是用户用路由规则访问页面时,真实跳转到的地址;二、路由地址的种类?
1、路由到:模块/控制器/操作; :2、路由到:操作方法;
3、路由到:类的方法(动态与静态)4、路由到:重定向地址(301)5、路由到:闭包函数
路由规则
一、什么是路由规则?
路由规则就是用户最终用来访问的URL地址并非原始URL地址;二、路由规则有哪几部分组成?
路由标识符 :变量名2/ :变量名21 [:可选变量名]
静态部分 动态态部分
路由到:模块/控制器/操作
一、基本语法:
Route:rule(路由规则;模块/控制器/操作);二、重点理解
1、可访问控制器: 'url_ controller_ layer' => 'controller',2、按从右到左的顺序进行地址解析:操作->控制器->模块3、支持额外参数(查询方式): ?变量名1=值1&变量名2=值2...
二、直接路由到:操作方法
、基本语法:
Route.:rule(路由规则,@模块/控制器/操作");二、重点理解
1、跳过模块初始化,直接执行控制器中的方法;2、模块初始化:配置文件和公共文件;
3、调用视图时必须设置完整模板文件的路径。
三、直接路由到:闭包函数
一、基本语法:
Route.:rule(路由规则,function ([参数]){
//闭包函数代码});
二、重点理解
1、闭包就是函数中的函数,或方法中的方法;
2、闭包函数可以接受通过路由规则传过来的参数;
3、不再执行任何操作,相当于把方法直接定义在参数中。
三、直接路由到:类的方法
一、基本语法:
Route:rule(路由规则,\完整命名空间类名@动态操作");Route:rule(路由规则,\完整命名空间类名::静态操作");二、重点理解
1、类必须创建在应用目录或子目录中;
2、静态方法支持外部动态访问,但建议在语法上分开;3、为了项目规范,除非不得已,否则尽可能少用。
四、直接路由到:重定向地址
一、基本语法:
Route.:rule(路由规则,重定向地址);二、重点理解
1、重定向地址: '/' 或者' http://开头的外部地址;
2、'I': 是以当前可访问的Web目录开始:如public;3、外部地址是301跳转,适用于网站迁移
路由参数
一、什么是路由参数?
路由参数是用来验证当前的路由规则是否有效的重要依据;二、路由参数的种类?
1、请求类型:["method'=>'getlpost'];
2、URL后缀:["ext=>'htmllshtml]/ [deny_ ext=>'php];3、回调函数:"callback'=>'回调函数名称];4、域名检测:"domain'=>tp5.com];
请求类型
一、请求类型
最常用的是:GET和POST,其它了解即可(如delete,put等);
二、使用方法
1、如注册方法已声明类型则无设置: Route:get()/post();2、Route.rule(/any():['method'=> getlpost'];
3、使用路由配置文件数组定义:['method'=>'getlpost];
三、用回调来验证路由规则
、说明
回调函数返回true则路由规则有效,否则无效;二、使用方法:
1、回调函数写在应用公共方法中: common.php;2、语法: [callback'=>'回调函数名称];
例如:用回调来检测是否存在某个应用配置项,来决定是否执行路由规则。
什么是正则表达式?
描述字符串匹配模式,主要用于字符串的查找/替换与分割;二、正则表达式有几部分组成?
1、由:定界符、原子、元字符和修正符,四部分组成;
2、定界符:通常用#,~~,/等非原子或元字符反斜杠都行;3、原子:需要匹配的字符,由可见与不可见字符组成;4、元字符:限定或修饰原子部分,不能单独使用;5、修正符:限定或修饰整个正则表达式,
【实例】:
<?php
th ink\Route:;group( 'demo',[ 1/分组名称
';id' => 'demo1', //路由规则' :name '=> ' demo2' ,”: is0k'=> ' demo3 '
],[ I
' method'=> 'get', //路由参数' prefix'=> ' index/user/ '],[
' id'=>'\d{2,4}', //变量规则'name'=>' [a-ZA-Z]+',' isOk'=>'0|1']);
别名路由
一、快速注册同一控制器下所有操作方法(不支持变量规则)1、动态方法:Route:alias( 规则名称;模块/控制器,[路由参数]);2、静态数组: return [
_ alias__ '=>[规则名称;模块/控制器,[路由参数]]
一、入口绑定
说明:在入口文件中添加:BIND_ MODUL E系统常量//将当前访问绑定模块/控制器
define('BIND_ MODUL E',index'); //模块级define('BIND_ MODUL .E',index/demo'); //控制器级
二、入口自动绑定
说明:入口文件名与应用中的模块自动绑定
1.入口自动绑定模块设置: 'auto_ bind_ module' => true,
2.创建要需要绑定的入口文件,例如: admin.php
3.创建与入口文件对应的模块与控制器: application/admin/controller/Index.php,并创建默认index()方法
4.直接访问:域名/admin.php,就会自动执行admin模块中默认控制器中的默认方法啦
三、绑定到命名空间或者类
1、绑定当前的URL到指定命名空间
Route:bind('applindex\controller','namespace');此前,所有采用该命名空间的类,都可以直接访问2、绑定当前的URL到类
Route::bind('applindex\controller\Demo'class');此前,所有Demo类中的方法,可以直接访问
特别注意:这种绑定形式会直接跳过模块配置文件和公共文件。
动态绑定
语法: Route::bind(模块[控制器][/操作])1、绑定当前的URL到模块Route::bind(模块');
2、绑定当前的URL到模块下面的控制器Route::bind('模块/控制器);
3、绑定当前的JRL到模块下面的控制器中的指定操作Route::bind(模块/控制器/操作');
网友评论