* セッションにオブジェクトのインスタンスを登録する [#y27f2bc6]
オブジェクトの状態を保持したままセッションに出し入れできる。以下のコードで検証した。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>
** 参考 [#zc2829a8]
http://stackoverflow.com/questions/1442177/storing-objects-in-php-session