# 導入

Zend_Serializer はさまざまな機関による保存可能な PHP 型表現の簡潔な生成と回復のインターフェイスに基づく アダプターを提供します。

Zend_Serializer の動的なインターフェイスの使用

シリアライザーをインスタンス化するにはアダプター名に基づいたファクトリーメソッド を使用しなければなりません:

    $serializer = Zend_Serializer::factory('PhpSerialize');
    // この時 $serializer は Zend_Serializer_Adapter_AdapterInterface のインスタンスです,
    // すなわち Zend_Serializer_Adapter_PhpSerialize です

    try {
        $serialized = $serializer->serialize($data);
        // この時 $serialized は文字列です

        $unserialized = $serializer->unserialize($serialized);
        // now $data == $unserialized
    } catch (Zend_Serializer_Exception $e) {
        echo $e;
    }

serialize() メソッドは 保存できる文字列を生成します。 再生成するにはシリアライズされたデータ unserialize()メソッドを簡単にコールできます。

シリアル化またはアンシリアライズにてエラーに遭遇した際は常に Zend_Serializer は Zend_Serializer_Exception をスローします。

特定されたシリアライザーアダプターの設定をするために、配列か Zend_Config を factory か serialize() と unserialize() メソッドに任意に追加できます:

    $serializer = Zend_Serializer::factory('Wddx', array(
        'comment' => 'serialized by Zend_Serializer',
    ));

    try {
        $serialized = $serializer->serialize(
            $data,
            array('comment' => 'change comment')
        );

        $unserialized = $serializer->unserialize(
            $serialized,
            array(/* options for unserialize */)
        );
    } catch (Zend_Serializer_Exception $e) {
        echo $e;
    }

factory()に与えらえたオプションはインスタンス化されたオブジェクトにとって妥当なものです。 setOption(s)メソッドを用いてこれらのオプションを 変更できます。単発の呼び出しだけをするために一つか それ以上の変更をするには、serialize() または unserialize() を第二引数として渡します。

Zend_Serializer の静的なインターフェイスの使用

Zend_Serializerとともに使用するのに特別なシリアライザーを標準のシリアル化 アダプターとして登録できます。デフォルトでは PhpSerialize アダプターが 登録されているでしょうが、静的メソッド setDefaultAdapter() を使用してこのオプションを変更できます。

    Zend_Serializer::setDefaultAdapter('PhpSerialize', $options);
    // or
    $serializer = Zend_Serializer::factory('PhpSerialize', $options);
    Zend_Serializer::setDefaultAdapter($serializer);

    try {
        $serialized   = Zend_Serializer::serialize($data, $options);
        $unserialized = Zend_Serializer::unserialize($serialized, $options);
    } catch (Zend_Serializer_Exception $e) {
        echo $e;
    }