YAML: Ficheros de configuración en Drupal 8

30/04/2015
YAML: Ficheros de configuración en Drupal 8

Como hemos visto en el post relativo a la nueva arquitectura que presenta Drupal 8 tras su integración con Symfony2, se incorporan nuevos componentes y funcionalidades que no estaban presentes en versiones previas y que nos conviene conocer antes de enfrentarnos a un nuevo desarrollo.

Una de las principales novedades con las que nos vamos a encontrar, es el nuevo formato para definir los ficheros de configuración y las rutas. Hasta ahora, cuando un desarrollador quería especificar el mapeo de las rutas contenidas en la aplicación, tenía que usar la función hook_menu() donde se especificaba el path, los posibles parámetros, etc. Igualmente, para definir las diferentes opciones de configuración de la aplicación, o de ciertos módulos, se utilizaba el fichero settings.php

Pero como hemos mencionado, a partir de Drupal 8 esto va a cambiar y tendremos toda esta información centralizada en ficheros .yml, aunque, antes de nada, debemos hacernos una pregunta:

¿Qué es YAML?

Creado en 2001 por Clark Evans, YAML (Ain't Another Markup Language) puede ser definido como un formato de serialización de datos, fácil de leer e inspirado en otros lenguajes como XML o Python.

Este lenguaje de marcado ligero tiene dos objetivos principales. Por una parte, tener la capacidad de representar cualquier tipo de dato en forma de listas, datos escalares y mapeos; y por otra parte, nunca perder de vista la sencillez y legibilidad de los datos por parte de un usuario.

Características de YAML

A la hora de trabajar con este tipo de ficheros es importante conocer cuáles son los pilares en los que se basa y tener siempre en mente, al menos, los principales puntos fuertes y detalles, para así sacarle el máximo partido. Algunas de sus características principales son:

  • La identación sigue un estilo estricto que no permite el uso de tabulaciones, sino que se debe usar los espacios en blanco.

  • Cada elemento de una lista comienza por un guión y se incluye un elemento por cada línea o varios entre corchetes y separados por comas.

  • Los arrays asociativos se identifican por un par ‘clave: valor’, uno por línea o entre llaves y separados por comas.

  • Los datos escalares pueden ser representados con comillas simples, dobles o sin ellas, si bien la opción recomendada es no usar ningún tipo de comillas.

  • Se pueden incluir comentarios mediante el uso de una almohadilla al principio de la línea.

  • Dentro de un flujo se pueden incluir varios documentos separados por tres puntos o tres guiones.

Estas son algunas de las principales características, pero por supuesto no son las únicas. Desde la documentación oficial se pueden leer todas las características relativas a cada versión, además de conocer los proyectos en los que se utilizan estos ficheros.

Ventajas de YAML

Como hemos visto hasta ahora, el uso de YAML es un cambio importante en Drupal 8 respecto a las versiones anteriores, pero ¿qué ventajas nos ofrece frente a los ficheros de configuración PHP?

La principal ventaja es la facilidad de uso, ya que se asemeja mucho más al lenguaje natural, permitiendo que tanto la definición de datos como la lectura de los ficheros sea mucho menos confusa que leer un fichero de configuración escrito en PHP.

Otra ventaja importante que aporta es el clarificar aún más la diferencia entre la lógica de negocio y los ficheros de configuración, usando para ello lenguajes y formatos totalmente distintos entre sí.

Es fundamental destacar la relación entre potencia y sencillez, es decir, YAML nos permite especificar configuraciones de datos complejas con una sintaxis muy sencilla. Además, existen numerosas referencias en la red que podemos usar para enfrentarnos a cualquier duda que nos surja.

También es importante mencionar que YAML es un formato de datos exportable entre diferentes lenguajes de programación, por lo que en cualquier momento podemos utilizar los mismos ficheros de configuración en otros proyectos con otros lenguajes si la situación lo requiere.

Ejemplos de uso

Llegados a este punto, ya sabemos qué es, qué nos aporta y cuáles son sus principales características, además de tener una visión general teórica de cómo podemos usarlo. Aun así, para que quede más claro, vamos a mostrar un par de ejemplos de su uso.

Ejemplo 1

#Esto es un comentario. Ejemplo de uso de YAML
Configuracion:
   Parametro1: valor1
   Parametro2: valor2
   #Una lista puede tener elementos listados o con valores
   Lista_elementos:
       - Elemento1
       - Elemento2
       - Elemento3: 10
       - Elemento4: Cadena de texto
   json: {clave1: valor1, clave2: valor2}

Ejemplo 2

#Ejemplo real una ruta en una aplicacion Drupal 8
login:
   pattern: /login
   defaults:
       _controller: \Drupal\Controller\WebController::login
   requirements:
       _method: GET

Conclusiones

Para finalizar, podemos afirmar que Drupal se enriquece con la inclusión de este nuevo componente, ya que que mejora mucho la experiencia del programador, facilitando y agilizando el desarrollo de proyectos y, por encima de todo, dando mucha más claridad a ciertos aspectos que anteriormente podían ser confusos.

Además, el uso de YAML se está extendiendo cada vez más tanto en proyectos nuevos como en los ya existentes, lo que promueve que mejore con cada nueva versión y que, si nos encontramos con alguna dificultad en el camino, no nos resulte complicado encontrar la solución en la comunidad de desarrolladores.

En cualquier caso, estas son algunas de las referencias más importantes, así como algunos tutoriales más extensos y complejos: