# Introduction

Zend_Serializer utilise une interface basée sur des adaptateurs afin de générer des représentations stockables de types php et inversement.

Utiliser Zend_Serializer

Pour instancier un sérialiseur, vous devriez utiliser la méthode de fabrique d'adaptateurs:

    $serializer = Zend_Serializer::factory('PhpSerialize');
    // $serializer est instance de Zend_Serializer_Adapter_AdapterInterface,
    // précisémment Zend_Serializer_Adapter_PhpSerialize

    try {
        $serialized = $serializer->serialize($data);
        // $serialized est une chaine

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

La méhode serialize génère une chaine. Pour regénérer la donnée utilisez la méthode unserialize.

Si une erreur survient à la sérialisation ou désérialisation, Zend_Serializer enverra une Zend_Serializer_Exception.

Pour configurer l'adaptateur, vous pouvez passer un tableau ou un objet instance de Zend_Config à la méthode factory ou aux méthode un-/serialize:

    $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 pour unserialize */));
    } catch (Zend_Serializer_Exception $e) {
        echo $e;
    }

Les options passées à factory sont valides pour l'objet crée. Vous pouvez alors changer ces options grâce à la méthode setOption(s). Pour changer des options pour un seul appel, passez celles-ci en deuxième arguement des méthodes serialize ou unserialize.

Utiliser l'interface statique de Zend_Serializer

Vous pouvez enregistrer une adaptateur spécifique comme adaptateur par défaut à utiliser avec Zend_Serializer. Par défaut, l'adaptateur enregistré est PhpSerialize mais vous pouvez le changer au moyen de la méthode statique setDefaultAdapter().

    Zend_Serializer::setDefaultAdapter('PhpSerialize', $options);
    // ou
    $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;
    }