Php/docs/yaml.callbacks.emit
Emit callbacks
Emit callbacks are invoked when an instance of a registered class is
emitted by yaml_emit() or
yaml_emit_file(). The callback is passed the object to
be emitted. The callback must return an array having two keys:
"tag
" and "data
".
The value associated with the "tag
" key must
be a string to be used as the YAML tag in the output. The value associated
with the "data
" key will be encoded as YAML
and emitted in place of the intercepted object.
Example #1 Emit callback example
<?phpclass 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);?>
The above example will output something similar to:
string(43) "--- example: !example/emit - a - b - c ... "