Callback-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ парсинга

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"
}
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы