2012-03-07 49 views
0

想象一下,我想要登錄一個用戶。用戶發送驗證數據,並且我的控制器獲取POST請求,因此它調用User Repository方法以註冊他。在模型中保存並初始化會話值

我想用用戶數據啓動用戶會話。但我應該如何開始會議?應該從控制器還是模型開始?我認爲它應該是模型,因爲這是我的業務邏輯誰說會議必須開始。但是如何?我應該將會話對象傳遞給我的Repository嗎?

我使用Doctrine作爲模型圖層,我自己的框架。我使用依賴注入,但我不知道如何從實體/存儲庫層訪問Session。

我現在唯一的解決方案是調用通過會話作爲參數的存儲庫方法,但它感覺不對。

回答

1

我認爲會話處理應該在控制器中完成,但只是個人意見。如果你試圖清晰地分離問題,那麼應該把它作爲控制器。將教義(非常注重抽象和獨立性)放在可靠的會話上並沒有多大意義。

使控制器從模型調用方法來註冊用戶。模型方法返回用戶特定的數據,並將其傳遞給會話(從控制器)。您可能會在很多地方使用會話,與模型無關。爲什麼要把它擴展到兩個層次,如果你可以把它封裝在一個層次?

+0

會話將被封裝在自己的類中。沒有必要通過控制器層封裝它。 IMO,如果我想寫某個業務邏輯的會話值,那麼模型應該寫它調用這個會話類。 控制器應該照顧發送數據到視圖層 – fiunchinho 2012-03-12 23:03:31

+0

嗯。可能是個人選擇,但我仍然不會把它放在模型中。比方說,你想用同一個模型寫一個桌面應用程序。它不需要會話。爲什麼模型會依賴於它? – ZolaKt 2012-03-13 17:05:44

+0

在這種情況下,我會向該模型注入一個Dummy Session對象(與普通的Session處理程序共享接口),因爲該特定設備不需要它。你怎麼看 ? – fiunchinho 2012-03-14 17:54:33