加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

是否有可重用的PHP路由器/调度程序?

发布时间:2020-05-31 01:11:08 所属栏目:PHP 来源:互联网
导读:我正在使用一个简单的框架来处理基于查询参数的请求. http://example.com/index.php?event=listPagehttp://example.com/index.php?event=itemViewid=1234 我想在此前面放置干净的网址,以便您可以通过以下方式访问它: http://example.com/listhttp://example.

我正在使用一个简单的框架来处理基于查询参数的请求.

http://example.com/index.php?event=listPage
http://example.com/index.php?event=itemView&id=1234

我想在此前面放置干净的网址,以便您可以通过以下方式访问它:

http://example.com/list
http://example.com/items/1234

我知道路线和调度是如何工作的,我可以自己写.但我宁愿利用已经解决了这个问题的所有代码.有没有人知道提供此功能的通用库或类,但是让我从路由匹配中返回任何我想要的东西?像这样的东西.

$Router = new Router();
$Router->addRoute('/items/:id','itemView',array( 'eventName' => 'itemView' ));

$Router->resolve( '/items/1234' );
// returns array( 'routeName' => 'itemView',//                'eventName' => 'itemView,//                'params' => array( 'id' => '1234' ) )

基本上我可以根据路径中解析的值自行调度.如果不是太麻烦(并且只要许可证允许),我不介意将其从框架中解除.但通常我发现框架中的路由/调度只是有点过于集成而不能像这样重新调整用途.我的搜索似乎表明,如果他们不使用框架,人们就会自己编写.

一个好的解决方案将支持以下内容:

>使用冒号表示法或正则表达式表示路径
>解析路由中的参数并以某种方式返回它们
>支持快速反向查找,如下所示:

$Router->get( 'itemView',array( 'id' => '1234' ) );
// returns 'items/1234'

任何帮助表示赞赏.

GluePHP可能非常接近你想要的.它提供了一个简单的服务:将URL映射到类.
require_once('glue.php');

$urls = array(
    '/' => 'index','/(?P<number>d+)' => 'index'
);

class index {
    function GET($matches) {
        if (array_key_exists('number',$matches)) {
            echo "The magic number is: " . $matches['number'];
        } else {
            echo "You did not enter a number.";
        }
    }
}

glue::stick($urls);

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读