php sessionに保存するオブジェクトはserialize/unserializeが必要

・・・タイトル通りです。

そのままだとオブジェクトのclassが「__PHP_Incomplete_Class」になってしまい、使えない。セッションから取り出し時に、そのオブジェクトのclassがまだ読み込まれていないかららしい。

NG:

<?php
:
$hoge= new Hoge();
$_SESSION['hogeObj'] = $hoge;
?>

<?php
:
$hoge = $_SESSION['hogeObj'];
$id = $hoge->getId();  //正しいメソッドにもかかわらずエラーになる。$hogeが__PHP_Incomplete_Class とみなされているため。
?>

OK:

<?php
:
$hoge= new Hoge();
$_SESSION['hoge'] = serialize($hoge);
?>

<?php
:
$hoge = unserialize($_SESSION['hoge']);
$id = $hoge->getId();  //OK。Hogeクラスとして認識されている
?>

カテゴリー: php