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

  1. <?php
  2. class EmitExample {
  3. public $data; // les données peuvent être de n'importe quel type valide pecl/yaml
  4.  
  5. public function __construct ($d) {
  6. $this->data = $d;
  7. }
  8.  
  9. /**
  10. * Yaml émet une fonction de rappel, référencée par un appel à yaml_emit par le nom de la classe
  11. *
  12. * Il est attendu de retourner un tableau contenant 2 valeurs :
  13. * - 'tag': balise personnalisée pour cette linéarisation
  14. * - 'data': valeur à convertir en yaml (array, string, bool, number)
  15. *
  16. * @param object $obj Objet à émettre
  17. * @return array Balise et données associées à émettre
  18. */
  19. public static function yamlEmit (EmitExample $obj) {
  20. return array(
  21. 'tag' => '!example/emit',
  22. 'data' => $obj->data,
  23. );
  24. }
  25. }
  26.  
  27. $emit_callbacks = array(
  28. 'EmitExample' => array('EmitExample', 'yamlEmit')
  29. );
  30.  
  31. $t = new EmitExample(array('a','b','c'));
  32. $yaml = yaml_emit(
  33. array(
  34. 'example' => $t,
  35. ),
  36. YAML_ANY_ENCODING,
  37. YAML_ANY_BREAK,
  38. $emit_callbacks
  39. );
  40. var_dump($yaml);
  41. ?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

string(43) "---
example: !example/emit
- a
- b
- c
...
"
LoadingChargement en cours