Emit callbacks

- « Parse callbacks

- Yaml Functions »

- PHP Manual
- Callbacks
- Emit callbacks

## 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;
      }

      /**
       * 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
    ...
    "