Callback-функций (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"
}