PHP オブジェクトのシリアライズ化 【初級編 第53回】

この記事は2013年8月28日に書かれたものです。内容が古い可能性がありますのでご注意ください。


PHP

クラス

今回も前回に引き続いてクラスについて記載していきたいと思います。

シリアル化について

シリアライズをすると配列やクラスのオブジェクトなどを
テキスト形式にすることができます。

シリアライズ化は serialize() を使用して行います。
その配列やオブジェクトの中身が
型名や長さや値といった形でテキスト形式に変換されます。

テキスト形式にしたものを変数に格納して、
ファイルに吐きだしたりなどをして使うことができます。

シリアル化してみる

以下では serialize() を使用して、変数、配列、オブジェクトの中身を
シリアライズ化したものを表示しています。

 <?php
         class testclass{
                 public  $val = 10;
                 public  $val2 = 20;
         }

         $hensuu = "aaa";
         $serial1 = serialize($hensuu);
         echo $serial1;

         echo "<br>---------------<br>";

         $hairetsu = array("111", "222", "333");
         $serial2 = serialize($hairetsu);
         echo $serial2;

         echo "<br>---------------<br>";

         $obj = new testclass();
         $serial3 = serialize($obj);
         echo $serial3;

 ?>

結果は以下のようになります。

ブラウザ確認画像

シリアライズ化したものは 型:値の長さ:値のようになっていることが確認できます。
また配列やオブジェクトをシリアライズした場合は、以下のようになります。
配列の場合
a:要素数:{1番目のキーの型:1番目のキー名;1番目の値の型:1番目の値の長さ:1番目の値;2番目のキーの型:2番目のキー名;2番目の値の型:2番目の値の長さ:2番目の値; …}

オブジェクトの場合
O:クラス名の長さ:クラス名:メンバ変数の数:{1番目のメンバ変数名の型:1番目のメンバ変数名の長さ:1番目のメンバ変数名:1番目のメンバ変数の値の型:1番目の値;2番目のメンバ変数名の型:2番目のメンバ変数名の長さ:2番目のメンバ変数名:2番目のメンバ変数の値の型:2番目の値;}

元の形に戻す場合は以下のように unserialize() を使用します。
以下では上記で serialize() したものを unserialize() しています。

<?php
        echo "<br>======================= serialize =======================<br>";
        class testclass{
                public  $val = 10;
                public  $val2 = 20;
        }

        $hensuu = "aaa";
        $serial1 = serialize($hensuu);
        echo $serial1;

        echo "<br>---------------<br>";

        $hairetsu = array("111", "222", "333");
        $serial2 = serialize($hairetsu);
        echo $serial2;

        echo "<br>---------------<br>";

        $obj = new testclass();
        $serial3 = serialize($obj);
        echo $serial3;

        echo "<br>======================= unserialize =======================<br>";
        $unserial1 = unserialize($serial1);
        $unserial2 = unserialize($serial2);
        $unserial3 = unserialize($serial3);
        echo $unserial1;
        echo "<br>---------------<br>";
        echo $unserial2;
        echo "<br>---------------<br>";
        echo $unserial3;

?>

ちゃんと元に戻っているのが確認できます。
ブラウザ確認画像

こうしてシリアライズ化した配列やオブジェクトなどのデータを
ファイルに書き込んだり、データベースに書き込んだりすることができます。
書き込んだものを後で取り出してアンシリアライズすればよいわけです。


今回はここまでで次回からもクラスについて記載していきたいと思います。

  • このエントリーをはてなブックマークに追加

PAGE TOP