YAML 데이터 직렬화 Emit callbacks
yaml_emit() 또는 yaml_emit_file()에 의해 등록된 클래스의 인스턴스가 방출될 때 방출 콜백이 호출됩니다. 콜백은 내보낼 개체를 전달합니다. 콜백은 "tag
"와 "data
"라는 두 개의 키가 있는 배열을 반환해야 합니다. "tag
" 키와 연결된 값은 출력에서 YAML 태그로 사용할 문자열이어야 합니다. "data
" 키와 연결된 값은 YAML로 인코딩되고 가로채는 개체 대신 내보내집니다.
예제 #1 Emit callback example
<?php
class EmitExample {
public $data; // data may be in any pecl/yaml suitable type
public function __construct ($d) {
$this->data = $d;
}
/**
* Yaml emit callback function, referred on yaml_emit call by class name.
*
* Expected to return an array with 2 values:
* - 'tag': custom tag for this serialization
* - 'data': value to convert to yaml (array, string, bool, number)
*
* @param object $obj Object to be emitted
* @return array Tag and surrogate data to emit
*/
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 ... "