2011-03-29 50 views
2

我在我的會話中有兩個命名空間:「全局」和「用戶」從Zend_Session_Namespace讀取時包含所有類?

在「全局」只有幾個設置,在「用戶」我有一個序列化的用戶對象,我猜是保存正確: (這是從sessionfile)

全球|一個:16:{ [...] S:12: 「last_request」; I:1301390173; [...] }

用戶|一個:1:{ S:10: 「userObject」,O:16: 「currentUserModel」:24:{ [...] S:10: 「* _roleId」; S:7: 「溢價」; [...] }}

當我這樣做: $sess = new Zend_Session_Namespace('global');

我得到包括 「currentUserModel.php」 我不想因爲我並不需要一個錯誤在這一點上的userobject - 我想要做的就是獲得我的「全局」命名空間。

現在的問題是: 我必須包括所有存儲在所有我的命名空間的所有對象或是否有可能只包括對於那些在命名空間我的對象的類訪問?

在此先感謝

+0

你使用'user'來存儲'user'會話嗎? – 2011-03-29 09:45:08

+0

我不確定你的意思。 「用戶」是我編制的命名空間。 「userObject」是會話變量,「currentUserModel」是我的類的名稱。 – 2011-03-29 09:53:32

+0

userObject和currentUserModel保存在用戶命名空間或全局命名空間中,看着你是錯誤的,我想他們是在全局命名空間中,另一件事你爲什麼要在模型中保存會話? – 2011-03-29 10:00:41

回答

2

Zend_Session中的命名空間是剛上$ _SESSION全局變量之上的一層。在PHP中,這些名稱空間不存在。在Zend_Session中,名稱空間是來自關聯數組的鍵。因此,當你加載一個會話命名空間時,你實際上加載了整個$ _SESSION,除非你不能通過這個Zend_Session訪問其他的「命名空間」。所以是的:你需要在會​​話之前包含文件currentUserModel.php。

另一種方法是正確使用類中的__sleep()和__wakeup()魔術方法,將一個類的屬性僅作爲關聯數組序列化,然後您就準備好了。

+0

我會試試這種方式。謝謝您的幫助! – 2011-03-30 14:16:41