1--TEST-- 2Test PECL bug #260628 3--SKIPIF-- 4<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?> 5--FILE-- 6<?php 7$data = <<<YAML 8#yaml 9--- 10data: !mytag 11 - look upper 12... 13YAML; 14 15function tag_callback ($value, $tag, $flags) { 16 echo "-- callback value --\n"; 17 var_dump($value); 18 var_dump($tag); 19 var_dump($flags); 20 echo "-- end callback value --\n"; 21 return array( 22 'data' => $value, 23 'another' => 'test', 24 ); 25} 26 27/* baseline. do like operation in native php. */ 28$native = array( 29 "data" => array("look upper"), 30); 31$native["data"] = tag_callback($native["data"], "!mytag", 0); 32 33echo "-- native value --\n"; 34var_dump($native); 35echo "-- end native value --\n"; 36 37$cnt = null; 38$array = yaml_parse($data, 0, $cnt, array( 39 '!mytag' => 'tag_callback', 40 )); 41 42echo "-- parsed value --\n"; 43var_dump($array); 44echo "-- end parsed value --\n"; 45?> 46--EXPECT-- 47-- callback value -- 48array(1) { 49 [0]=> 50 string(10) "look upper" 51} 52string(6) "!mytag" 53int(0) 54-- end callback value -- 55-- native value -- 56array(1) { 57 ["data"]=> 58 array(2) { 59 ["data"]=> 60 array(1) { 61 [0]=> 62 string(10) "look upper" 63 } 64 ["another"]=> 65 string(4) "test" 66 } 67} 68-- end native value -- 69-- callback value -- 70array(1) { 71 [0]=> 72 string(10) "look upper" 73} 74string(6) "!mytag" 75int(0) 76-- end callback value -- 77-- parsed value -- 78array(1) { 79 ["data"]=> 80 array(2) { 81 ["data"]=> 82 array(1) { 83 [0]=> 84 string(10) "look upper" 85 } 86 ["another"]=> 87 string(4) "test" 88 } 89} 90-- end parsed value -- 91