我正在寫一個Laravel應用程序,它基本上允許您以各種格式運行錦標賽。現在我遇到的問題是我需要爲每種不同錦標賽格式使用相同的路線。每種格式都有非常不同的邏輯和視圖。Laravel應用程序結構/體系結構
起初我只具有單一TournamentController和if語句中的每個函數用於檢查的類型,並執行適當的邏輯,例如:
public function start($tournamentId){
$tournament = Tournament::find($tournamentId);
if($tournament->type == "single elimination"){
//single elimination logic
}elseif($tournament->type == "round robin"){
//round robin logic
}
}
現在我知道我添加更多比賽類型中,具有這種TournamentController中每個函數的邏輯類型都會變得混亂。於是我創建了兩個獨立的控制器,SingleEliminationController和RoundRobinController,並在路線文件我做類似的東西製作成動態控制器:
$tournament = Tournament::find(Request::segment(2));
$controller = str_replace(' ', '', $tournament->tournamentType());
Route::get('{tournamentId}/{slug}', $controller . '[email protected]')->where('tournamentId', '[0-9]+');
這似乎更容易管理了一點,但它似乎仍然有點哈克,我肯定有一個更好的方法來構建事物,但我無法弄清楚。任何幫助將不勝感激,謝謝!
值得注意的是:http://www.objectmentor.com/resources/ articles/Clean_Code_Args.pdf – cwallenpoole 2014-11-14 19:46:23
@cwallenpoole,well .. OP甚至沒有看到使用全局範圍的問題。我懷疑你的鏈接材料會有任何影響。 – 2014-11-16 22:41:33
@tereško請隨時發佈更多有用的評論 – RMK147 2014-11-17 23:32:47