Добро пожаловать на форум PHP программистов!
За последние 24 часа нас посетили 17936 программистов и 1569 роботов. Сейчас ищут 1000 программистов ...
Приступая к работе

Emit callbacks

Вернуться к: 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.

Пример #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);
?>

Результатом выполнения данного примера будет что-то подобное:

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


Вернуться к: Callbacks

© 2024 «PHP.RU — Сообщество PHP-Программистов»
Главная | Форум | Реклама на сайте | Контакты VIP Сувениры
Разработка компании ODware