セッションにオブジェクトのインスタンスを登録する

オブジェクトの状態を保持したままセッションに出し入れできる。以下のコードで検証した。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>

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS