路由在url的基础上,实现了以下功能 :
· 让URL更断更优雅; · 隐藏请求参数使得请求更加安全; · 可以利用路由拦截器并进行权限检查等操作;
phpGrace 对路由的封装和支持相对其他框架是“简单”的,因为上面的优点在浏览器环境下比较明显,对于api接口、后端其实并没有绝对的优势,而路由的实现需要 php 对路由进行解析,越复杂的路由解析过程也就越复杂。所以我们更愿意开发者“合理”地使用路由;
作为开发者您不一定要掌握路由的内部工作原理,您只需要明白 “路由解析的最终结果就是普通的 URL”即可!这样更容易掌握控制器、方法与路由的关系。
路由配置文件位置 : appRoute/站点或分组目录/router.php
编写路由规则语法 :
return array( '路由名称/' => '控制器/方法', '路由名称/:参数名称/:参数名称/...' => '控制器/方法', // 更多配置 );
路由在url的基础上,实现了以下功能 :
1 路由名称必须以 / 结尾 2 路由参数格式 : 路由名称/:参数/:参数/ 3 使用 $ 进行完整匹配 4 路由名称及参数支持 数字 字母 下划线 中划线 及 中文
一些路由配置例子
路由配置 : 'home/' => 'index/index' 访问地址 : http://域名/home/ 解析地址 : htto://域名/index/index // 新闻中心 路由配置 : 'news/$' => 'news/index' 访问地址 : http://域名/news/ 解析地址 : htto://域名/news/index // 新闻详情 路由配置 : 'news/:id/' => 'news/info' 访问地址 : http://域名/news/10.html 解析地址 : htto://域名/news/info/id/10.html // 对应控制器源码示例 <?php namespace grace\controller; use grace\grace; class news extends grace{ public function index(){ // your code here ... echo '新闻中心'; } public function info($id){ echo "新闻详情 {$id}"; } }
可以通过一个数组表达一组路由,语法格式 :
<?hp return array( '分组名称' => array( '路由名称' => '对应的控制器/方法', //... ) );
分组路由定义示例
<?php return array( 'news' => array( // 新闻系统列表页 '/' => 'news/index', // 新闻系统详情页 '/:newsId/' => 'news/info' ) );
对应控制器示例
<?php namespace grace\controller; use grace\grace; class news extends grace{ public function index(){ echo 'news index'; } public function info($newsId){ echo 'news info '.$newsId; } }
url 访问示例
新闻中心 : http//:localhost/news 新闻详情 : localhost/100.html 代表 http://localhost/news/info/newsId/100.html