1

我將Zend_Auth_Storage_Session中的User對象作爲有效認證的數組元素進行存儲。Zend_Auth_Storage_Session序列化對象屬性

$authSession = new Zend_Auth_Storage_Session(); 
$authSession->write(array('user' => $user)); 

當我讀爲Zend_Auth_Storage_Session,用戶lastLogin財產,這是對會議寫DateTime實例,是字符串。

+0

我不清楚你的問題。 –

+0

對不起。我有自定義類型用戶的對象。它的一個屬性是'lastLogin',它的類型是DateTime(php api)。我將用戶寫入Zend_Auth_Storage_Session。當我從會話中讀取用戶時,'lastLogin'是DateTime對象的字符串表示形式。我想這是因爲序列化。我想知道的是如何在每次從會話中讀取用戶時不必實例化新的DateTime而繞過它。 – cbaby

+0

從存儲中讀取後,'lastLogin'字符串值是什麼樣的? –

回答

1

cbaby,我不是說這是解決方案,但它對我來說工作正常,因爲我可以正常訪問'lastLogin'。也許別的地方有其他錯誤。確保您正確設置日期。

$user = new stdClass(); 
$user->name = 'Mary'; 
$user->lastLogin= new DateTime(); 

$authSession = new Zend_Auth_Storage_Session(); 
$authSession->write(array('user' => $user)); 

$read = $authSession->read(); 
echo $read['user']->lastLogin->format('Y-m-d'); 
echo '<br>' . $read['user']->lastLogin->getTimezone()->getName(); 
+0

問題在於它在寫入會話後更新用戶的loginTime,因此我可以在db中存儲新值。不知道我可以通過引用更新已寫入會話的對象。 – cbaby

相關問題