CakeFest 2024: The Official CakePHP Conference

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 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
...
"
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top