2015-02-09 27 views
1

最近我已經完成了閱讀OOP書籍,並且我已經決定使用Laravel Framework創建一個項目。Laravel - 正確的工作組織

在本書中,作者建議根據類型劃分類:DTO,BL和存儲庫。 Laravel讓我有點困惑如何組織我的系統。

我一直在想這樣做這樣的事情:

文件結構:

app 
    BL 
    RegisterUser.php 
    Repositories 
    UserRepository.php 

再比如說做:

// UserController的

public function register($name, $email) 
{ 
    try { 
     $this->registerUser->fromWeb($name, $email); 
    } 

    catch(..) { 

    } 

    return View::make(....); 
} 

//註冊用戶

public function fromWeb($name, $email) { 
    if(...) 
     throw new Exception(); 

    $this->userRepository->createUser($name, $email); 

}

// userRepository

public function createUser($name, $email) { 
    // Insert to DB 
} 

我不爲這個行動提出具體的,我一般詢問是否有正確的工作方式。

此外,我必須在模型中使用DTO嗎?如果是這樣,它應該如何適應?

回答

1

我不會說有任何正確的方法,但乍一看對我來說,感覺就像一個層數太多。

我相信模型會是你的DTO的。如果你需要他們,他們會包括基本的訪問者/變異者,否則Eloquent在處理其他問題方面做得相當不錯。許多人也使用這些模型進行驗證,儘管這取決於您。有一個叫做Ardent的驚人軟件包,如果這聽起來像個好主意,它會讓你的生活更輕鬆。對於一般的Laravel工作流程,我認爲這很有道理。

每個人都不一樣,但我通常發現自己傾向於一個更通用的服務層,在這個層中我的存儲庫負責處理所有業務邏輯。簡而言之,我使用它們來保持我的控制器儘可能輕。這如何轉化爲你讀過的內容,它基本上是將業務邏輯和存儲庫合併到存儲庫中。

然後,控制器將嚴格負責管理服務層(存儲庫)和視圖之間的數據流。