В Кохане вы можете просто использовать для этого каталог. Таким образом, ваши контроллеры будут размещены так.
application/classes/Controllers/V2_2013_02_13/Enpoint1Controller
Чем вы можете настроить маршруты для ваших различных версий.
Route::set('v2', 'v2/<controller>(/<action>)')
->defaults(array(
'directory' => 'V2_2013_02_13',
'controller' => 'welcome',
'action' => 'index',
));
Это будет самый простой подход, однако, если вы действительно хотите иметь некоторый динамический способ вызвать определенные версии контроллеров, чем я хотел бы посмотреть на HMVC из Кохана.
Я предполагаю, что для каждой версии у вас есть контроллер ввода, а внутренний запрос - к правильному контроллеру.
Возможно, что-то вроде этого.
Маршрут:
Route::set('versioned', '<version>/<someAction>')
->defaults(array(
'version' => 'v2',
'someAction' => 'user'
'controller' => 'welcome',
'action' => 'index',
));
Контроллер:
class Controller_Welcome extends Controller {
public function action_index()
{
// Your Version and the action
$this->request->param('version');
$this->request->param('someAction');
// Do an internal request to the right controller (the v2/user is an example)
$internalRequest = Request::factory('v2/user');
}
}
Я надеюсь, что это помогает.
Эй, как вы его реализовали? Я использую Symfony2 и ищу решение. –