我希望我遵循程序的權利,這個問題就足夠了。我試圖尋找無濟於事,所以我希望我能在這裏得到答案。實施DDD封裝
我剛開始進入Laravel。我注意到了一種名爲DDD的新設計方法,我想嘗試盡我所能實現它。
假設我有一個位於模型文件夾中的用戶包。使用主類來訪問諸如驗證用戶之類的功能會不會是一種很好的做法?這個類將放在包的主目錄下,並且將被稱爲User。本質上這將封裝存儲庫,實體和服務。這樣,需要這些數據的控制器就不會受到一堆呼叫的污染。
例如:爲了驗證用戶登錄,我們稱之爲:
User->validateUserLogin($username, $password);
內。然後User->validateUserLogin:
public function validateUserLogin($username, $password)
{
$user_login = new User_Login_Entity($username, $password);
// Assume the validation returns a valid User object on successful validation
$User = User_Validation_Service->ValidateUserCredentials($user_login)
}
我要對這個錯誤?我知道SRP是這方面的關鍵,我不確定我是否足夠好/完全遵循。基本上我的想法是:從控制器到模型工作的一個入口點。這與控制器調用存儲庫,服務和實體相反。
嗨,謝謝你的回答!這肯定有助於我應該如何分層。我還有另一個問題:我基本上是爲每個國家創建一個新的實體。 例如:來賓到我的系統將得到一個Guest_Entity,用於存儲瀏覽器數據,IP等。當他們嘗試登錄時,會給他們一個名爲User_Login_Entity的新實體,它將存儲他們的用戶名,密碼。如果他們有效,他們會得到一個完整的用戶實體。這是最好的方法嗎?或者我應該使用一個海量實體進行部分分配? – thatonefreeman
當談到PHP時,我完全不識字,所以不要指望我給你提供建議。你說的是,你想跟蹤你的網站的「客人」或「(匿名)訪問者」,以及他們何時/如果他們登錄,你想要將他們的匿名行爲與他們登錄的行爲聯繫起來。根據我的瞭解,這隻需要一個「相關ID」。爲什麼不將這個「瀏覽會話」標識符傳遞給匿名跟蹤和登錄跟蹤?然後,這就是你的網絡服務器的日誌,不是嗎? –
對不起,也許這是一個不好的例子。基本上我所說的是 - 對於我想跟蹤的每種可能狀態都有一個實體是理想的嗎?所以會有一個用於Guest,另一個用於用戶,也可能是Admins單獨的一個可以說。每個聚合根將具有某些功能/訪問系統其餘部分的方法。 – thatonefreeman