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;
}