PHPでシリアライズ(文字列化)してみる。

実装上で配列・連想配列などで実装されているものをファイルなどに出力する場合、文字列に変換する必要がある。 PHPではserialize・unserializeを使用して、文字列への変換と読み込みを行う。

<?php

$data = [
    'user1'=>['name'=>'Taro', 'age'=>18],
    'user2'=>['name'=>'Jiro', 'age'=>15],
    'user3'=>['name'=>'Saburo', 'age'=>10]
];

$serialized_data = serialize($data);
echo 'serialized: '.$serialized_data."\n";

$unserialized_data = unserialize($serialized_data);
echo 'unserialized: user1.name => '.$unserialized_data['user1']['name'];

配列をserialize()というメソッドに渡すと、文字列に変換したものを返却してくれる。 今度はこれをunserialize()に渡すと、元の状態のオブジェクトを取得できる。

実際に実行してみると、

$ php serialize_sample.php

serialized: a:3:{s:5:"user1";a:2:{s:4:"name";s:4:"Taro";s:3:"age";i:18;}s:5:"user2";a:2:{s:4:"name";s:4:"Jiro";s:3:"age";i:15;}s:5:"user3";a:2:{s:4:"name";s:6:"Saburo";s:3:"age";i:10;}}
unserialized: user1.name => Taro

となる。 これで簡単にオブジェクトの書き出しと読み込みが可能になるが、暗号化されるわけではないので重要な情報の受け渡しには注意しましょう。