Emission des fonctions de rappel
L'émission des fonctions de rappel est invoquée lorsqu'un instance d'une classe enregistrée est émise via la fonction yaml_emit() ou la fonction yaml_emit_file(). La fonction de rappel reçoit l'objet à émettre. La fonction de rappel doit retourner un tableau contenant 2 clés : "tag" et "data". La valeur associée avec la clé "tag" doit être une chaîne à utiliser comme balise YAML dans la sortie. La valeur associée avec la clé "data" sera encodé YAML et émise à la place de l'objet intercepté.
Exemple #1 Exemple d'émission des fonctions de rappel
- <?php
- class EmitExample {
- public $data; // les données peuvent être de n'importe quel type valide pecl/yaml
- public function __construct ($d) {
- $this->data = $d;
- }
- /**
- * Yaml émet une fonction de rappel, référencée par un appel à yaml_emit par le nom de la classe
- *
- * Il est attendu de retourner un tableau contenant 2 valeurs :
- * - 'tag': balise personnalisée pour cette linéarisation
- * - 'data': valeur à convertir en yaml (array, string, bool, number)
- *
- * @param object $obj Objet à émettre
- * @return array Balise et données associées à émettre
- */
- public static function yamlEmit (EmitExample $obj) {
- return array(
- 'tag' => '!example/emit',
- 'data' => $obj->data,
- );
- }
- }
- $emit_callbacks = array(
- 'EmitExample' => array('EmitExample', 'yamlEmit')
- );
- $t = new EmitExample(array('a','b','c'));
- $yaml = yaml_emit(
- array(
- 'example' => $t,
- ),
- YAML_ANY_ENCODING,
- YAML_ANY_BREAK,
- $emit_callbacks
- );
- var_dump($yaml);
- ?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
string(43) "--- example: !example/emit - a - b - c ... "