Émission des fonctions de rappel
PHP Manual
PHP Manual»Callbacks»Émission des fonctions de rappel

L'émission des fonctions de rappel est invoquée lorsqu'une 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ée 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 sérialisation
   *   - '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);
?>

Résultat de l'exemple ci-dessus est similaire à :

string(43) "---
example: !example/emit
- a
- b
- c
...
"
To Top