2013-05-11 61 views

回答

37

我最終使用在應用/控制器命名空間和目錄:

/app 
    /controllers 
    /Api 
     /v1 
     /UserController.php 
     /v2 
     /UserController.php 

而在UserController.php文件,我設置相應的命名空間:

namespace Api\v1; 

namespace Api\v2; 

然後在我的路線中,我做了這樣的事情:

Route::group(['prefix' => 'api/v1'], function() { 
    Route::get('user',  'Api\v1\[email protected]'); 
    Route::get('user/{id}', 'Api\v1\[email protected]'); 
}); 

Route::group(['prefix' => 'api/v2'], function() { 
    Route::get('user',  'Api\v2\[email protected]'); 
    Route::get('user/{id}', 'Api\v2\[email protected]'); 
}); 

我不是積極的,這是最好的解決方案。但是,它允許控制器的版本控制方式不會互相干擾。如果需要,你可以做一些與模型類似的驗證。

+0

當我使用這種方法時,我必須使用完整路徑引用名稱空間外部的所有類(例如:\ Input,\ App) – 2014-05-05 00:24:58

+3

您還可以添加'use App;'語句。這就是命名空間的工作原理。 – 2014-05-31 00:05:53

+1

@ iah.vector - 版本有問題,只有控制器必須去v1或模型,工作,請求和...也必須去vesrion文件夾? – 2015-09-28 13:03:59