Restler定制路线

时间:2012-05-09 13:20:49

标签: php url-routing restler

我们正在探索Restler框架。我们需要的是一条自定义路线,如:

[host]/:sessionid/{class}/{method}?param1=x&param2=y

例如,Settings类中的Game方法:

<?php
class Game {
    function settings($session, $sound=TRUE, $music=TRUE){
        //
    }
}
?>

应映射到http://hostname/12435635/game/settings?sound=x&music=y

我们设法通过稍微破解routes.php文件来实现它,但由于文件是自动生成的,因此这个想法并不是很好。那么,是否可以在不破解Restler源或修改routes.php文件的情况下创建此类路由?

1 个答案:

答案 0 :(得分:1)

第一步是从URI中删除类名。可以通过修改addAPIClass语句

来实现
$r->addAPIClass('Game', '');

这会更改自动生成的uri结构,如下所示

http://hostname/settings/12435635/?sound=x&music=y

下一步是通过向api方法添加PHPDoc注释来手动指定路由,如下所示

<?php
class Game {

    /**
    * @url GET /:session/game/settings
    */
    function settings($session, $sound=TRUE, $music=TRUE){
        //
    }
}

这将映射到

http://hostname/12435635/game/settings?sound=x&music=y

每次在生产模式下生成此路线时,该路线将被添加到routes.php:)

您可以添加更多@url注释以创建指向同一方法的多个路径