オブジェクトのシリアライズ

オブジェクトをシリアライズしてリクエストに渡してみました

<?php
class Hoge
{
  public $var = null;
  public function hello()
  {
    return 'hello';
  }
}

$hoge = new Hoge();
$hoge->var = 3;
$hoge = serialize($hoge);

if (isset($_REQUEST['hoge'])) {
  $get_hoge = unserialize($_REQUEST['hoge']);
  echo $get_hoge->hello();
  echo $get_hoge->var;
}
?>

<form method="get" action="">
  <input type="hidden" name="hoge" value=<?php echo $hoge?>>
  <input type="submit" value="push">
</form>

pushボタンを押すと "hello3" が表示 ※プロパティの値も保持されている
methodはpostでもgetでもOK

以下のように単に"で括るだけだとvalueがうまく取得できません
value="<?php echo $hoge?>"
この場合、
value="<?php echo htmlspecialchars($hoge)?>"とすれば可


ブラウザからソースを見ると、シリアライズされたデータはこのようになっています

<input type="hidden" name="hoge" value=O:4:"Hoge":1:{s:3:"var";i:3;}>


ちなみにシリアライズせずにオブジェクトを渡そうとすると以下エラー

Catchable fatal error: Object of class Hoge could not be converted to string in ...