文章分页:
自定义路由是框架功能调用的另一种模式,此方法不拘泥于固有的物理路径,可随意定制特定的规则。框架的路由设置也是基于应用,规则文件为应用根目录下的 route.php ,此文件可用于声明三项内容,分别是路由节点格式,自定义路由规则和自定义接口处理方法。具体格式见下例:
<?PHP
//自定义路由格式
$format = array(
'camel' => '[a-z]+([A-Z][a-z]+)+',
);
//自定义路由规则
$rule = array(
array('/test_1/[any]', 'mystep::getModule'),
array('/test_2/[any]', 'app\test\route'),
array('/test_3/[camel]', array('app\sample\preCheck,3', 'app\sample\routeTest')),
);
//当前应用的数据接口
$api = array(
'myapi' => 'app\test\api',
);
- $format - 数组格式,下标代表格式名称,值为格式内容,本例定义了小驼峰模式的字符串
- $rule - 无下标(数字下标)数组,每个值为一个规则,包含两项的数组,分别为规则路径模式和处理函数,具体规则详见自定义路由。需要指出的是 mystep::getModule 是框架默认的处理自定义路由的入口方法,方法内已经为引用好了相关全局变量,并声明了主模版,子模版只要在执行脚本中将编译结果赋值给 $content 参数即可,虽然也支持用户自定义方法,但如无特殊情况,建议沿用系统所提供的方法。
- $api - 数组格式,下标代表接口名称,值为处理方法(本例中为 app\test\ 命名空间下的 api 方法),假定应用名称为 test,API 调用地址为:/api/test/myapi/
在自定义路由的模式下,加设网址为 http://localhost/myroute/dir1/dir2?para1=111¶2=222 ,所显示内容如下,系统路径信息参数 $info_app 内容如下:
array(8) {
["name"]=>
string(12) "框架示例"
["app"]=>
string(6) "Sample"
["ver"]=>
string(3) "1.0"
["intro"]=>
string(18) "框架应用示例"
["copyright"]=>
string(68) "版权所有 2021 Windy2000"
["path"]=>
array(3) {
[0]=>
string(8) "myroute"
[1]=>
string(4) "dir1"
[2]=>
string(4) "dir2"
}
["para"]=>
array(2) {
["para1"]=>
string(3) "111"
["para2"]=>
string(3) "222"
}
["route"]=>
string(19) "/myroute/dir1/dir2"
}
以上内容与路径调用模式基本一样,唯一的区别就是所有路径信息均被记录下来,以便于程序进一步处理。