## Funções de retorno de emissão

Funções de emissão são chamadas quando uma instância de uma classe registrada é emitida pelas funções yaml_emit() ou yaml_emit_file(). A função recebe o objeto a ser emitido. A função deve retornar um array com duas chaves: "`tag`" e "`data`". O valor associado à chave "`tag`" deve ser uma string a ser usada como a etiqueta YAML no resultado. O valor associado à chave "`data`" será codificado como YAML e emitido no lugar do objeto interceptado.

Exemplo #1 Exemplo de função de emissão

    <?php
    class EmitExample {
      public $data;    // os dados podem estar em qualquer tipo adequado de pecl/yaml

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

      /**
       * Função de emissão Yaml, referida na chamada a yaml_emit por nome de classe.
       *
       * Esperado retornar um array com dois valores:
       *   - 'tag': etiqueta personalizada para esta serialização
       *   - 'data': valor a ser convertido para yaml (array, string, booleano, número)
       *
       * @param object $obj Objeto a ser emitido
       * @return array Etiqueta e dados substitutos a serem emitidos
       */
      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);
    ?>

O exemplo acima produzirá algo semelhante a:

    string(43) "---
    example: !example/emit
    - a
    - b
    - c
    ...
    "

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open