Visual Studio Code, el popular editor de código abierto de la empresa Microsoft, ha sido abrazado por los desarrolladores de forma mayoritaria en los últimos años. Su éxito viene dado no solo por el hecho de que es gratuito, sino también porque es muy ligero y potente, y porque ha recibido una contribución masiva de la comunidad mediante extensiones, lo que lo ha acabado convirtiendo en una herramienta altamente personalizable. A pesar de todo esto, la realidad es que la versión de fábrica de este editor no incorpora mucho soporte para PHP, llevando a algunas empresas y usuarios a considerar opciones de pago como PHPStorm. En esta entrada del blog os mostramos cómo podéis configurar Visual Studio Code para trabajar con PHP de la manera más eficiente posible sin tener que acudir a alternativas comerciales.
Extensiones
Las extensiones de VSCode le añaden un gran valor al entorno de desarrollo. Entre otras ventajas, permiten su personalización, la integración con herramientas externas o el añadido de funcionalidades que mejoran nuestra productividad. Para nosotros, estas son las extensiones de Visual Studio Code imprescindibles para trabajar con PHP:
- PHP Intelephense: Es sin lugar a dudas una de las mejores extensiones en Visual Studio Code para PHP. Proporciona autocompletado de código, navegación entre clases, información de la firma de métodos y funciones, un analizador sintáctico que revisa nuestro código, formateado, resaltado inteligente… ¡Toda una navaja suiza!
- PHP Namespace Resolver de Mehedi Hassan: Como su propio nombre indica, nos facilita la resolución de espacios de nombres, su importación, ordenación, expansión de clases, etc.
- Composer de DEVSENSE: Provee de una integración completa en VSCode de Composer y de Packagist que, como seguramente sabéis, es el repositorio por defecto en el que Composer busca las dependencias que le indiquemos.
- PHP DocBlocker: Nos facilita la documentación de código PHP, ya sea de clases, interfaces, métodos, variables…
- PHP Add Property de Kotfire: Nos ayuda a gestionar las propiedades de nuestras clases siempre que sean recibidas mediante constructor. No solo podemos añadir nuevas propiedades al constructor al mismo tiempo que se crea la propiedad en la clase y su asignación de forma automática, sino también borrar algunas que ya haya. Es mejor que la extensión PHP Constructor.
- PHP Getters & Setters (CV fork): Es ideal para crear métodos getter y setter rápidamente.
- PHP Refactor Tool: Toda una joyita escondida en el Marketplace… Esta herramienta nos permitirá realizar refactorizaciones para los nombres de las clases, interfaces, funciones, propiedades, etc. Y lo que es realmente importante: puede implementar estos cambios a nivel de proyecto, de modo que si, por ejemplo, cambiamos el nombre de una clase en un fichero, esta modificación de nombre se efectuará en todos los ficheros en los que esta clase estuviera siendo usada.
- PHP Refactoring: A día de hoy es la extensión que mejor realiza la extracción a un nuevo método, si bien no es perfecta.
- Deep-assoc-completion-vscode: Sirve para autocompletar las claves de los arrays asociativos en PHP a medida que escribimos. A los que sufrís el mantenimiento de proyectos legacy llenos de arrays asociativos os enamorará.
- PHPUnit Test Explorer de Recca0120: Nos añade un panel de testing en Visual Studio Code desde el cual podemos gestionar y ejecutar nuestros tests de PHPUnit de manera sencilla e intuitiva. También nos permite ejecutar tests desde las propias clases de test mediante un icono de Play.
- Better PHP Tools Annotations Keywords Colorization: Resalta las anotaciones de PHPUnit en nuestro código.
- PHP Debug de Xdebug: Nuestro mejor amigo para depurar código PHP. Nos permite añadir puntos de ruptura para ver el valor de nuestras variables a lo largo de todo el flujo de nuestro programa, hacer seguimiento de variables en un Watch, usar la Debug Console…
- PHP Sniffer de wongjn: Identifica violaciones a los estándares de codificación con PHP Code Sniffer.
- Format on Auto Save: Formatea nuestro código automáticamente al guardar.
Configuraciones
Además de las extensiones anteriores, podemos pulir nuestro editor VSCode con algunas configuraciones clave que os mostramos a continuación:
{
// Configuraciones generales
"files.eol": "\n",
"editor.dragAndDrop": false,
"editor.rulers": [
120
],
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"[php]": {
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client",
"editor.wordSeparators": "`~!@#%^&*()-=+[{]}\\|;:'\",.<>/?"
},
"files.autoSave": "afterDelay",
"workbench.localHistory.mergeWindow": 600,
"workbench.tree.indent": 20,
"explorer.compactFolders": false,
"breadcrumbs.symbolPath": "off",
"workbench.editor.tabSizing": "shrink",
"editor.guides.bracketPairs": true,
// PHP Namespace Resolver
"namespaceResolver.sortAlphabetically": true,
"namespaceResolver.sortOnSave": true,
"namespaceResolver.showMessageOnStatusBar": true,
// PHP DocBlocker
"php-docblocker.alignParams": true,
"php-docblocker.alignReturn": true,
"php-docblocker.gap": false,
"php-docblocker.useShortNames": true,
// PHP Add Property
"phpAddProperty.property.visibility.choose": true,
"phpAddProperty.property.visibility.default": "private",
"phpAddProperty.contextMenuOptions.enable": true,
"phpAddProperty.contextMenuOptions.renameProperty": false,
"phpAddProperty.contextMenuOptions.changePropertyType": false,
"phpAddProperty.showMessagesOnStatusBar": true,
"phpAddProperty.constructor.docblock.enable": true,
"phpAddProperty.constructor.docblock.withParameter": true, // Indicar tipo en parámetro del constructor a la vez que en el parámetro del Docblock
}
Entre las configuraciones más destacadas, encontramos:
- La posibilidad de disponer de guardado y formateado automático de archivos.
- La mejora en la visualización y comportamiento del espacio de trabajo, con el mayor sangrado para los diferentes niveles de carpetas del árbol del proyecto y la eliminación de la compactación de carpetas.
- La selección de variables de PHP completas (incluido el símbolo del dólar, $) cuando hacemos doble clic sobre ellas.
- La personalización perfecta para las extensiones PHP Namespace Resolver, PHP DocBlocker y PHP Add Property.
Todas las configuraciones están explicadas una por una con ejemplos visuales en este videotutorial del canal de Zataca Academy, por lo que si estáis interesados en conocer mejor su funcionamiento, os recomendamos que le echéis un vistazo.
Estamos convencidos de que utilizando estas herramientas podréis optimizar vuestro flujo de trabajo y simplificar el proceso de desarrollo. No obstante, cabe recordar que no todas las extensiones serán útiles para todos los proyectos. Dependiendo de vuestras necesidades específicas, puede que incluso necesitéis extensiones adicionales. Si trabajáis con Laravel, tenemos una buena noticia. En próximas entregas os traeremos una nueva entrada al blog con las mejores extensiones para trabajar con Laravel en VSCode, lo cual complementará y enriquecerá aún más vuestro entorno de desarrollo. ¡Estad atentos!