我一直在使用會話,MVC設計和麪向對象的PHP。我應該在哪裏保存或檢索會話中的數據?我想從方法中檢索它,所以我不必將數據傳遞給方法。最佳做法是什麼?使用MVC和OO會話的最佳方式PHP
2
A
回答
3
我通常把它放在控制器裏面。它是有道理的。控制器決定發生了什麼,爲什麼不讓它決定是否允許人們執行所請求的操作。 通常,您在MVC系統中有多個控制器。例如。 BaseController(抽象 - 普通),NonSessionController擴展BaseController(例如:用於靜態頁面),SessionController擴展BaseController(主要會話在這裏 - 這可能是抽象的)。如果你有例如不同的用戶類型,你可能想要多態這個控制器的,如:AdminController,UserController等
1
我已經嘗試了幾種方式,包括使用靜態包裝類來處理它,但我總是回到只使用超全局數組本身。我仍然使用包裝進行身份驗證檢查和其他重複性任務,但最終,使用庫存設置對我來說更簡單,更簡單。
0
我認爲這取決於回收數據的使用範圍,如果它只在方法內部使用,那麼爲什麼你應該在外面檢索它,而且會話總是在超全局變量中可用,所以最好是本地化它只在需要時。
0
我不會打擾會話包裝。你將無法獲得足夠的優勢來限制。通過超全球允許你使用任何你想要的(希望理智的)數據結構。我的會話數據總是以2級或更多級別的數組數據爲結尾,這對於通過會話包裝器進行管理來說太冗長乏味。
超全球甚至不會限制你讓PHP使用save handler將會話數據存儲在數據庫中,這對於可伸縮性來說是相當不錯的。
3
就我個人而言,我是Zend_Session包裝類的巨大粉絲。我更喜歡使用面向對象風格的數據,並且使用包裝器的命名空間優勢是一個巨大的優勢。
這些看起來更好嗎?
$_SESSION['Zend_Auth']['user'] = "myusername";
或
$authNamespace = new Zend_Session_Namespace('Zend_Auth');
$authNamespace->user = "myusername";
我喜歡的外觀,使用訪問器給你。
注意:在MVC系統中,無論選擇什麼方法,都應該始終在控制器中獲取/設置會話數據。
相關問題
- 1. 跟蹤Facebook會話的最佳方式
- 2. 恢復會話的最佳方式?
- 3. asp.net mvc:使用html.radiobutton的最佳方式
- 4. PHP:使用PDO存儲會話的最佳方法
- 5. 允許使用Tomcat的子域會話cookie的最佳方式
- 6. 在PHP會話期間保持信息的最佳方式
- 7. 在PHP中取消會話的最佳方式
- 8. Spring JavaMailSender - 使用會話的最佳方式
- 9. 將數據庫調用添加到OO的最佳方法PHP
- 10. 最佳實踐OO
- 11. 使用Ninject和MVC 3的最佳方式是什麼?
- 12. 的最佳方式 - PHP 5.5
- 13. 最佳的方式在PHP
- 14. 在MVC中維護會話狀態的最佳方法
- 15. 訪問用戶會話的最佳方式
- 16. C#MVC最佳方式利用AJAX
- 17. 每次創建一個會話的最佳方式是什麼? (ASP.NET,MVC)
- 18. 使用PHP和Javascript從MySQL加載數據的最佳方式
- 19. PHP MVC會話
- 20. 什麼是處理會話和認證的「漂亮和適當的OO」方式?
- 21. PHP會話驗證 - 最佳實踐
- 22. 最佳實踐Php會話與Angular2
- 23. 用PHP創建PDF的最佳方式
- 24. 最佳方式使用Ajax
- 25. 最佳方式使用Oracle
- 26. 最佳方式使用子
- 27. 最佳方式使用Magicalrecord
- 28. 最佳方式使用jQuery
- 29. 最佳方式使用Perl
- 30. 最佳方式使用CFFI