PHP Conference Nagoya 2025

Emitir callbacks

Las emisiones de callbacks son invocadas cuando una instancia de una clase registrada es emitida por la función yaml_emit() o la función yaml_emit_file(). El callback se pasa al objeto a ser emitido. El callback debe devolver un array que contenga dos claves: "tag" y "data". El valor asociado con la clave "tag" debe ser un string a ser usado como la etiqueta YAML en la salida. El valor asociado con la clave "data" será encodeado como YAML y será emitido en lugar del objeto interceptado.

Ejemplo #1 Ejemplo de emisión de callback

<?php
class EmitExample {
public
$data; // los datos podrían ser ajustables en cualquier tipo de pecl/yaml

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

/**
* Yaml emite la función de callback, referida a la llamada yaml_emit por el nombre de la clase.
*
* Se espera que devuelva un array con 2 valores:
* - 'tag': etiqueta personalizada para esta serialización
* - 'data': valor que se convierte a yaml (ya sea array, string, bool, número)
*
* @param object $obj Objeto a ser emitido
* @return array Etiqueta y datos sustitutivos a emitir
*/
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);
?>

El resultado del ejemplo sería algo similar a:

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

User Contributed Notes

There are no user contributed notes for this page.
To Top