Más con Symfony

3.4. Depura más rápido

Cuando se produce un error en el entorno de desarrollo, Symfony muestra una página de excepción que incluye un montón de información útil. Entre otras cosas es posible ver la traza de ejecución y todos los archivos que se han ejecutado. Si configuras la opción ~sf_file_link_format~ en el archivo settings.yml (ver más adelante), puedes incluso pinchar sobre el nombre de cada archivo y se abrirá en tu editor de textos o IDE favorito posicionándose en la línea exacta en la que se ha producido el error. Esta característica es un buen ejemplo de cómo una pequeña mejora puede hacer que ahorres mucho tiempo cuando estás depurando una aplicación.

Nota Los paneles de la vista y de los mensajes de log también muestran nombres de archivo (sobre todo cuando Xdebug está activado). Estos nombres de archivo también se pueden pinchar cuando se configura la opción sf_file_link_format.

Por defecto la opción sf_file_link_format no tiene ningún valor, por lo que se hace uso, si está disponible, del valor de la opción de configuración xdebug.file_link_format de PHP. La opción xdebug.file_link_format en el archivo php.ini permite a las versiones más recientes de XDebug añadir enlaces a todos los nombres de archivos mostrados en la traza de ejecución.

El valor adecuado para la opción sf_file_link_format depende tanto de tu IDE como de tu sistema operativo. Si quieres por ejemplo abrir los archivos con el editor TextMate, debes añadir lo siguiente en el archivo settings.yml:

dev:
  .settings:
    file_link_format: txmt://open?url=file://%f&line=%l

Symfony reemplaza la variable %f por el valor de la ruta absoluta del archivo y la variable %l se reemplaza por el número de línea específico.

Si utilizas el editor VIM la configuración no es tan sencilla, pero existen recursos web que lo explican para symfony y para XDebug.

Nota Puedes utilizar tu buscador favorito para aprender a configurar tu IDE. Además, puedes buscar la configuración tanto de sf_file_link_format como de xdebug.file_link_format, ya que las dos funcionan igual.