Callbacks
Analyse des fonctions de rappel
L'analyse des fonctions de rappel callable est invoquée par
les fonctions
yaml_parse, yaml_parse_file ou
yaml_parse_url lorsqu'une balise YAML enregistrée est
rencontrée. La fonction de rappel est appelée avec la valeur de l'entité
de la balise, la balise, et les drapeaux indiquant le type scalaire de
l'entité. La fonction de rappel doit retourner les données que l'analyseur YAML
doit émettre pour cette entité.
Exemple d'analyse de fonction de rappel
'tag_callback',
));
var_dump($result);
?>
]]>
&example.outputs.similar;
string(5) "World"
[1]=>
string(14) "!example/hello"
[2]=>
int(1)
}
array(1) {
["greeting"]=>
string(11) "Hello World"
}
]]>
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 d'émission des fonctions de rappel
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);
?>
]]>
&example.outputs.similar;