« 目次

Movable Type オブジェクト・リファレンス

MT::Serialize

概要

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"です。

利用方法

MT::Serialize::new( $type )

指定したシリアライゼーション方法$typeに合ったメソッドを生成して返すコンストラクターです。

MT::Serialize->serialize( $data )

$dataに指定したデータを、BerkleyDBテーブル、データベースのBLOBフィールド、フラット・ファイルに保存するのに適したバイトストリームに変換します。

引数$dataはシリアライズしたいデータが何であれ、そのデータへのリファレンスでなければなりません。例えばハッシュ・リファレンスをシリアライズする場合には、ハッシュ・リファレンスへのリファレンスを渡す必要があります。

MT::Serialize->unserialize( $data )

シリアライズされたバイトストリームを元のPerlデータ構造に戻し、復元された任意のデータへのリファレンスを返します。

互換性について

Movable Typeのシリアライザーのバージョン2では、ストリームの構造が大幅に変わっていますが、後方互換性は保たれています。バージョン1でfreezeしたデータをMTのthawメソッドに渡すと、旧バージョンのコードで処理されます。これを再シリアライズすると、新しいフォーマットに更新されます。新しいエンコード方法では、バージョン番号も記録されるので、今後エンコード・フォーマットをアップグレードする際、既存のシリアライズされたデータを壊したり不本意にアップグレードしてしまう可能性を気にせず、より柔軟に対応できます。

新しいプロトコルでは、Perlで扱う、ほとんどすべてのデータ構造を保存することができます。ただし現時点では、オブジェクトへのリファレンス、コード・リファレンスまたはグロブには対応していません。


Copyright © 2001-2006 Six Apart, Ltd. All Rights Reserved.