Cómo configurar VS Code para desarrollar en PHP
Visual Studio Code es un popular editor de código gratuito. Puede competir fácilmente con PhpStorm, ya que es gratuito y de código abierto.
Características principales
- Depurador de código.
- Terminal integrado.
- Herramientas convenientes para trabajar con Git.
- Resaltado de sintaxis para muchos lenguajes populares y formatos de archivo.
- Navegación conveniente.
- Vista previa integrada de Markdown.
- Autocompletado inteligente.
- Administrador de paquetes integrado.
VS Code tiene una gran cantidad de extensiones para desarrolladores. Para instalar un nuevo paquete, accede a la pestaña "Extensions", escribe el nombre del paquete en la barra de búsqueda y haz clic en "Install".

EditorConfig para VS Code
EditorConfig es un archivo de configuración y un conjunto de extensiones para muchos editores de código. Toma las configuraciones del archivo .editorconfig, que generalmente se encuentra en la raíz del proyecto. La extensión configurará automáticamente las sangrías y los saltos de línea de manera uniforme para todos los desarrolladores que lo utilicen. El código PHP se ejecuta principalmente en sistemas *nix, por lo que es necesario utilizar el estándar.
A continuación se muestra un ejemplo de archivo .editorconfig, basado en el que se utiliza en Laravel:
root = true
# Configuraciones globales que se aplicarán a todos los archivos.
[*]
charset = utf-8
# En sistemas Unix, se utiliza lf para los saltos de línea.
# Esto también es un requisito del estándar PSR.
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
# Se pueden establecer configuraciones individuales para tipos de archivos específicos
# o archivos individuales por nombre.
[*.md]
trim_trailing_whitespace = false
[*.{yml,vue,js,html}]
indent_size = 2
[{package.json,.github/workflows/*.yml}]
indent_style = space
indent_size = 2
[lib/**.js]
indent_style = space
indent_size = 2
PHP Intelephense
El editor ya tiene soporte para la sintaxis y sugerencias de las funciones estándar del lenguaje. Pero sin una extensión especial, el editor no sugerirá las funciones personalizadas de otras partes del proyecto. Por lo tanto, para admitir el autocompletado, el análisis de código y la navegación a la ubicación donde se creó una función/clase/variable (usando el atajo Alt+Click), se utiliza la extensión PHP Intelephense
Para evitar duplicar las sugerencias, es necesario desactivar el soporte de código PHP incorporado en el editor: Extensions -> Buscar @builtin php -> PHP Language Features -> Desactivar
PHP Debug
Durante el desarrollo, puede haber situaciones en las que las funciones de depuración y registro simples no sean suficientes. En ese caso, puede ser útil una herramienta especial: el depurador. Para PHP, existe la extensión xdebug, que permite establecer puntos de interrupción y ver el entorno en el lugar donde se produjo un error, ejecutando el código paso a paso hasta el siguiente punto.
Para utilizar PHP Debug, es necesario instalar XDebug por separado, ya que la extensión del editor no funcionará sin él. Después de instalar la extensión, es necesario agregar una configuración para PHP en la sección Debug del archivo launch.json que se creará en la raíz del proyecto después de seleccionar el lenguaje. La extensión creará el archivo con los parámetros predeterminados.
Para que XDebug se comunique con nuestro depurador, es necesario agregar configuraciones al archivo de configuración de PHP. Para encontrar este archivo, ejecute el comando php --ini en la terminal o ejecute un servidor web con el código phpinfo().
En Linux, PHP carga no solo el archivo principal, sino también los archivos de una carpeta adicional. Por ejemplo, en Ubuntu, la ruta a la carpeta de archivos de configuración de PHP tiene la forma /etc/php/VERSIÓN/cli/conf.d/, donde VERSIÓN es la versión de PHP que usas (por ejemplo, 8.3). El comando php --ini te muestra la ruta exacta en tu equipo. En esta carpeta, crea un archivo con permisos de root. No hace falta dar permisos de escritura a todos los usuarios (chmod 777), basta con los permisos normales de un archivo de configuración:
$ sudo nano /etc/php/8.3/cli/conf.d/99-local.ini
El contenido del archivo para Xdebug 3, que es la versión actual:
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003 ; El puerto que especificamos en launch.json
xdebug.idekey=code
Si en otras guías ves los nombres xdebug.remote_enable, xdebug.remote_host o xdebug.remote_port (con el puerto 9000), son parámetros de Xdebug 2 y ya no funcionan en Xdebug 3. En el archivo launch.json, el puerto de la configuración de PHP también debe ser 9003. Puedes consultar la equivalencia de los parámetros en la guía de actualización de Xdebug.
Estas son configuraciones para el desarrollo local, cuando el proyecto se desarrolla y se ejecuta en la misma computadora, por ejemplo, en tu máquina de trabajo.
PHP Sniffer
En los lenguajes de programación, existe el concepto de estilo de codificación. Pero no todos los desarrolladores están al tanto de esto. El programa que se encarga de verificar si el código cumple con los estándares se llama linter. En PHP, se utilizan los estándares llamados PSR. Nos interesan los estándares PSR-1 y PSR-12, que se refieren a la codificación y las reglas de formato. Ten en cuenta que PHP-FIG publicó después PER Coding Style, que extiende y reemplaza a PSR-12; en esta guía usamos PSR-12 porque PHPCS lo incluye con el nombre PSR12.
En PHP, se utiliza PHP_CodeSniffercomo linter. Para que funcione, es necesario instalar el linter globalmente con composer global require "squizlabs/php_codesniffer=*" y la extensión PHP Sniffer.
Verifica que el linter se haya instalado correctamente (el número de versión que veas dependerá de la versión instalada):
$ phpcs --version
PHP_CodeSniffer version 3.x.x (stable) by Squiz and PHPCSStandards
Puedes ejecutar la verificación del código en la terminal utilizando el comando phpcs, especificando explícitamente el estándar que desea utilizar y la ruta a verificar:
$ phpcs --standard=PSR12 <dirname>

Además de PHP_CodeSniffer, hoy se usan otras herramientas de calidad de código para PHP, como Laravel Pint, PHP CS Fixer (formateadores) y PHPStan (análisis estático).
Semicolon Insertion Shortcut
PHP requiere que las instrucciones se separen con punto y coma. La extensión Semicolon Insertion Shortcut agrega el símbolo necesario al final de la línea con un atajo. Si al presionar [Ctrl] + ; el símbolo no se inserta, verifica la lista de atajos de teclado y, si es necesario, asigna manualmente la combinación: File -> Preferences -> Keyboard Shortcuts
Asistentes de IA en VS Code
VS Code admite asistentes de IA que sugieren código mientras escribes y responden preguntas en un chat, por ejemplo GitHub Copilot u otras extensiones similares. Pueden ahorrarte trabajo en tareas repetitivas, pero no sustituyen entender el código. Lee y prueba cada sugerencia antes de aceptarla, porque puede contener errores o usar funciones que ya no existen. Las condiciones y los planes de cada herramienta cambian con frecuencia, así que consulta la documentación oficial antes de elegir una.
Extra
Aquí hay una lista de extensiones que se pueden utilizar no solo para PHP:
- GitLens — VS Code ya tiene soporte para Git. Pero cuando las funciones básicas no son suficientes, Gitlens puede ser de ayuda. Por ejemplo, una de las características útiles es git blame en la línea actual.

- Indent Rainbow — colorea las sangrías en el código. Resalta las sangrías incorrectas. Puedes cambiar el arco iris por tonos de gris.

- Sincronización de ajustes — VS Code ya incluye una función integrada para sincronizar la configuración, las extensiones y los atajos entre diferentes computadoras. Se activa desde el menú de administración (el engranaje) con la opción "Backup and Sync Settings..." e inicias sesión con una cuenta de Microsoft o de GitHub. No es necesario instalar un complemento aparte (la extensión "Settings Sync" de Shan Khan, que usaba GitHub Gists, es independiente de esta función integrada).
- Fira Code — una fuente monoespaciada que utiliza ligaduras (combina varios caracteres en uno) para combinaciones de caracteres comunes en programación. Una mejora visual para una lectura de código más cómoda.
