セッションにオブジェクトのインスタンスを登録するオブジェクトの状態を保持したままセッションに出し入れできる。以下のコードで検証した。PHP4でも同様になる。 <? class Test { var $var; function __construct() { } function get() { return $this->var; } function set($v) { $this->var = $v; } function twice() { $this->var *= 2; } } // セッション開始するが、 // FORMDATAでnewの指定があればセッション初期化する session_start(); if ($_REQUEST['new']) { session_unset(); } // 1回目のリクエスト if (!$_SESSION['test']) { print "A<br>"; // Testクラスのインスタンスを作成し、 $t = new Test; $var = $t->get(); //フィールド変数$varに100をセットする $t->set(100); // その状態でセッションに登録する $_SESSION['test'] = $t; } // 2回目以降のリクエスト else { print "B<br>"; // セッションからインスタンスを取り出し、 $t = $_SESSION['test']; // フィールド変数$varを2倍する $t->twice(); $var = $t->get(); // その状態でセッションに登録する $_SESSION['test'] = $t; } ?> <html> <body> <? print "$var<br>\n"; print "<pre>"; print_r($t); print "</pre>"; ?> <a href="<?=$_SERVER['PHP_SELF']?>">next</a><br> <a href="<?=$_SERVER['PHP_SELF']?>?new=1">new</a> </body> </html> 参考http://stackoverflow.com/questions/1442177/storing-objects-in-php-session |
|