<?php
class EmitExample {
public $data; // データは pecl/yaml で使える形式となります
public function __construct ($d) {
$this->data = $d;
}
/**
* Yaml 発行コールバック関数。yaml_emit からクラス名で参照される
*
* 二つの要素を持つ配列を返す。
* - 'tag': このシリアライズ用のカスタムタグ
* - 'data': yaml に変換する値 (array, string, bool, number)
*
* @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
...
"