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インスタンス)がstringになります。

+0

あなたの質問には明確ではありません。 –

+0

申し訳ありません。私はカスタムタイプのユーザーのオブジェクトを持っています。そのプロパティの1つはDateTime(php api)型の 'lastLogin'です。私はZend_Auth_Storage_Sessionにユーザーを書き込みます。私はセッションからユーザーを読むとき、 'lastLogin'はDateTime objecの文字列表現です。私はそれがシリアライゼーションのためだと推測します。私が知りたいのは、セッションからユーザーを読むたびに新しい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

関連する問題