Функций обратного вызова (callback) для парсинга вызывается функциями yaml_parse(), yaml_parse_file() или yaml_parse_url() при обнаружении зарегистрированного тега YAML. В callback-функцию передается значение тегированной записи, сам тег и флаги, определяющие скалярный тип записи. Callback-функция должна вернуть данные, которые парсер YAML должен использовать для этой записи.
Пример #1 Пример использования callback-функции парсинга
<?php
/**
* Callback-функция парсинга для тегов yaml.
* @param mixed $value Данные из файла yaml
* @param string $tag Тег, для которого срабатывает функция
* @param int $flags Стиль скаляра записи (см. YAML_*_SCALAR_STYLE)
* @return mixed Значение, которое должен выдать парсер YAML
*/
function tag_callback ($value, $tag, $flags) {
var_dump(func_get_args()); // отладка
return "Hello {$value}";
}
$yaml = <<<YAML
greeting: !example/hello World
YAML;
$result = yaml_parse($yaml, 0, $ndocs, array(
'!example/hello' => 'tag_callback',
));
var_dump($result);
?>
Результатом выполнения данного примера будет что-то подобное:
array(3) { [0]=> string(5) "World" [1]=> string(14) "!example/hello" [2]=> int(1) } array(1) { ["greeting"]=> string(11) "Hello World" }