Здравствуйте. Делаю небольшое API для AJAX-запросов. Сам роут для API выглядит вот так:
Route::group(array('prefix' => 'api'), function()
{
Route::any('/v{version}/{group}.{method}.{type?}', 'ApiController@callMethod');
});
Я создал новый неймспейс и прописал в контроллере:
public function callMethod($version, $controller, $method, $responseType = 'json')
{
$api = new Api\Api();
return $api->callMethod($controller, $method, $responseType);
}
Все ок пока я не захочу создать новую версию API, сохранив старую. Думал сделать так:
public function callMethod($version, $controller, $method, $responseType = 'json')
{
$directory = 'v' . $version;
$className = "Api\\$directory\\Api()";
$api = new $className();
return $api->callMethod($controller, $method, $responseType);;
}
и создавать для каждой версии отдельную папку. Но в таком случае придется менять неймспейсы во всех классах, что, как мне кажется, не совсем правильно. Может быть есть другой вариант?