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.

Exemple 679. 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.

Exemple 680. 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;
}