Публикующие callback-функции

Публикующие callback-функции вызываются тогда, когда с помощью yaml_emit() или yaml_emit_file() публикуются экземпляры зарегистрированных классов . В функцию передается публикуемый объект. Callback-функция должна вернуть массив с двумя ключами: "tag" и "data". Значение, связанное с ключем "tag" должно быть строкой, содержащей тег YAML для вывода. Значение, связанное с ключем "data" должно быть закодировано как YAML и опубликовано вместо перехваченного объекта.

Пример #1 Пример публикующей callback-функции

<?php
class EmitExample {
  public 
$data;    // данные должны быть понятного pecl/yaml типа

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

  
/**
   * Публикующая callback-функция Yaml.
   *
   * Ожидается возвращение массива с двумя значениями 2:
   *   - 'tag': пользовательский тег для этой сериализации
   *   - 'data': значение для преобразование в yaml (массив, строка, логическое, число)
   *
   * @param object $obj Публикуемый объект
   * @return array Тег и суррогатные данные для публикации
   */
  
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
...
"