my $serializer = MT::Serialize->new(MT::ConfigMgr->instance->Serializer);
my $data = { 'this' => 'is', 'my' => 'data' };
my $frozen = $serializer->serialize( ¥$data );
my $thawed = $serializer->unserialize( $frozen );
このパッケージは、Movable Typeで使えるシリアライゼーション・メソッドを抽象化するためのパッケージです。シリアライゼーションの方法は、環境変数Serializerで指定します。現時点で使えるシリアライゼーションの方法は、"MT"と"Storable"です。
指定したシリアライゼーション方法$typeに合ったメソッドを生成して返すコンストラクターです。
$dataに指定したデータを、BerkleyDBテーブル、データベースのBLOBフィールド、フラット・ファイルに保存するのに適したバイトストリームに変換します。
引数$dataはシリアライズしたいデータが何であれ、そのデータへのリファレンスでなければなりません。例えばハッシュ・リファレンスをシリアライズする場合には、ハッシュ・リファレンスへのリファレンスを渡す必要があります。
シリアライズされたバイトストリームを元のPerlデータ構造に戻し、復元された任意のデータへのリファレンスを返します。
Movable Typeのシリアライザーのバージョン2では、ストリームの構造が大幅に変わっていますが、後方互換性は保たれています。バージョン1でfreezeしたデータをMTのthawメソッドに渡すと、旧バージョンのコードで処理されます。これを再シリアライズすると、新しいフォーマットに更新されます。新しいエンコード方法では、バージョン番号も記録されるので、今後エンコード・フォーマットをアップグレードする際、既存のシリアライズされたデータを壊したり不本意にアップグレードしてしまう可能性を気にせず、より柔軟に対応できます。
新しいプロトコルでは、Perlで扱う、ほとんどすべてのデータ構造を保存することができます。ただし現時点では、オブジェクトへのリファレンス、コード・リファレンスまたはグロブには対応していません。