发出回调

yaml_emit()yaml_emit_file() 发出已注册类的实例时,将调用发出回调。回调将传递要发出的对象。回调必须返回一个具有两个键的数组:“tag”和“data”。与“tag”键关联的值必须是将在输出中用作 YAML 标记的字符串。与“data”键关联的值将被编码为 YAML 并发出以代替被拦截的对象。

示例 #1 发出回调示例

<?php
class EmitExample {
public
$data; // 数据可以是任何 pecl/yaml 适用的类型

public function __construct ($d) {
$this->data = $d;
}

/**
* Yaml 发出回调函数,由类名在 yaml_emit 调用中引用。
*
* 预期返回一个具有 2 个值的数组:
* - 'tag': 此序列化的自定义标签
* - 'data': 要转换为 yaml 的值(数组、字符串、布尔值、数字)
*
* @param object $obj 要发出的对象
* @return array 标签和要发出的代理数据
*/
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);
?>

上面的示例将输出类似以下内容

string(43) "---
example: !example/emit
- a
- b
- c
...
"
添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top