YAML y PHP (III)

Ahora que ya sabemos como leer datos procedentes de una fuente YAML usando PHP, es el momento de aprender a serializar, en este formato, los datos que maneja nuestra aplicación.

Podemos generar dos tipos de salidas: un flujo YAML, o un archivo para ser enviado o despositado donde nos convenga. La escritura de los datos es, si cabe, más simple que la lectura y, en este artículo, vamos a aprender a generarlos.

Como es habitual, al final del texto encontrarás un enlace para descargar el material didáctico correspondiente.

ESCRIBIR DATOS YAML DESDE PHP

Para escribir datos que maneje nuestra aplicación en YAML contamos con dos funciones de las que dispone PHP, una vez instalada la correspondiente extensión:

La función yaml_emit(). Recibe un arreglo de datos y los serializa en un flujo YAML, que devuelve a una variable.

La función yaml_emit_file(). Serializa un arreglo de datos y los graba en un archivo, en la ubicación que necesitemos (siempre, por supuesto, que tengamos permisos para grabar en tal ubicación).

Ambas son muy simples de usar, como vemos en el código crear_yaml.php:

Como ves, el código es, conceptualmente, muy simple. La mayor parte del mismo la creamos para definir los datos que vamos a serializar. Son sólo las dos líneas resaltadas las que realmente nos interesan: la primer crea un flujo de datos (que luego es volcado a pantalla) y la segunda crea un archivo en disco, en la misma ubicación que está el script, con el mismo contenido en YAML.

Pruébalo para ver cómo funciona, antes de seguir leyando.

PARÁMETROS DE LAS FUNCIONES

La función yaml_emit() recibe, como parámetro obligatorio, el nombre del arreglo que vamos a serializar. La función yaml_emit_file() recibe, cómo parámetros obligatorios, el nombre del fichero (y, en su caso, la ruta), donde los queremos grabar y el del arreglo de datos (en ese orden). Además, hay algunos parámetros adicionales, opcionales en teoria, aunque necesarios en muchos casos.

El parámetro $encoding. Es una constante de PHP que especifica la codificación de salida de los datos, tanto para flujo como para fichero. Los posibles valores son YAML_ANY_ENCODING, YAML_UTF8_ENCODING, YAML_UTF16LE_ENCODING y YAML_UTF16BE_ENCODING. El primero ha caido en desuso porque, básicamente, le dice a la función que codifique «a como quede», lo que, desde luego, no nos sirve en el caso de YAML. Sabemos que los datos YAML deben estar codificados en Unicode, por lo que, en aplicaciones manejadas en países del mundo occidental emplearemos, en la mayor parte de los casos, YAML_UTF8_ENCODING.

El parámetro $linebreak. Es una constante de PHP que define cómo se crearán los saltos de línea en la salida. Los posibles valores son YAML_ANY_BREAK, YAML_CR_BREAK, YAML_LN_BREAK y YAML_CRLN_BREAK. Usar uno u otr dependerá de como se reconozcan los saltos de línea en el sistema operativo en el que está corriendo la aplicación. Si ponemos un valor y los saltos de línea y las indentaciones no salen correctamente, lo cambiamos a otro. Al contrario de lo que ocurre en el parámetro anterior, en este caso YAML_ANY_BREAK suele ser una buena opción.

Aún hay otro parámetro opcional. Se trata de una función de callback que, en la práctica, no tiene uso real, si el arreglo de datos está correctamente construido.

El código listado al principio te lo puedes descargar en este enlace.

   

Deja un comentario