発行コールバック

発行コールバックが起動するのは、登録済みのクラスのインスタンスが yaml_emit()yaml_emit_file() から呼び出されたときです。 コールバックに渡されるのは、発行対象のオブジェクトです。 このコールバックは、二つの要素 "tag" および "data" を持つ配列を返す必要があります。 "tag" の値は文字列で、出力時の YAML タグとして用いられます。 "data" の値は YAML 形式にエンコードされ、 解析対象のオブジェクトの代わりに発行されます。

例1 Emit callback example

<?php
class EmitExample {
public
$data; // データは pecl/yaml で使える形式となります

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


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