文字

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

<?php
class  EmitExample  {
  public 
$data ;     // data may be in any pecl/yaml suitable type

  
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
...
"
上一篇: 下一篇: