账户中心 退出系统
开发文档 资讯·分享 技术交流 会员登录
phpGrace GSCMS 公众号系统
路由配置

路由概述

路由在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