目标
我的任务是对一个相当大的 PHP Lithium API 进行版本控制。
我正在寻找的最终结果是使用命名空间来分隔版本。
例如,通常看起来像这样的锂路线:
Router::connect('/{:controller}/{:action}/{:id:\d+}');
可以有以下 URL,映射到以下 PHP 调用:
http://www.fungames.com/game/view/2
app\controllers\Game::View($gameId)
但我想创建以下映射:
Router::connect('/{:version}/{:controller}/{:action}/{:id:\d+}');
这样可以进行以下两个调用:
http://www.fungames.com/v1/game/view/2
app\controllers\v1\Game::View($gameId)
http://www.fungames.com/v2/game/view/2
app\controllers\v2\Game::View($gameId)
问题
不幸的是,Lithium 文档没有太多提及 API 版本控制。这里有一个简短的提及作为延续路线的一个例子。但是这种方法需要在我的控制器中创建 if 语句来对我的 API 进行版本控制,我个人认为这是一种糟糕的方法。
TLDR
使用 PHP Lithium 框架时,实现命名空间 API 版本控制的最佳方法是什么?