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

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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2011-04-08 (金) 01:59:31 (2752d)