Introducción
Visual Studio Code es un editor de código fuente desarrollado por Microsoft para Windows, Linux y macOS (incluyendo Mac M1). Incluye soporte para depuración, control de Git integrado y GitHub, resaltado de sintaxis, autocompletado inteligente de código, fragmentos de código y refactorización de código.
La característica principal del editor es que es extensible y cuenta con una enorme colección de extensiones mantenidas por los usuarios y por el propio Microsoft.
Como introducción general, esta es una presentación sobre el tema Joomla Development with Visual Studio Code (PDF, 1Mb), por René Kreijveld, desarrollador de Joomla, Destiny B.V. Joomla User Group London, 16 de marzo de 2021.
En esta página, detallamos una lista de extensiones recomendadas para configurar VSCode y así dar soporte a PHP y Joomla.
Esta es una lista de extensiones para dar soporte a PHP en VSCode:
- PHP Debug felixfbecker.php-debug. Soporte de depuración para PHP con XDebug.
- phpcs ikappas.phpcs. PHP CodeSniffer para Visual Studio Code.
- PHP Intelephense bmewburn.vscode-intelephense-client. Inteligencia de código PHP para Visual Studio Code. Alternativa: PHP IntelliSense felixfbecker.php-intellisense
- PHPUnit emallin.phpunit. Ejecuta pruebas PHPUnit desde VSCode.
- phpfmt kokororin.vscode-phpfmt. La extensión phpfmt que faltaba para Visual Studio Code. El formateador phpfmt puede analizar y formatear incluso un archivo PHP versión 4 en caso de ser necesario.
- php cs fixer junstyle.php-cs-fixer: En caso de optar por la PSR-2: Coding Style Guide. Extensión PHP CS Fixer para VS Code, formateador de php, herramienta de embellecimiento de código php, formatea html.
- PHP Namespace Resolver MehediDracula.php-namespace-resolver: PHP Namespace Resolver puede importar y expandir su clase. También puede ordenar sus clases importadas por longitud de línea o en orden alfabético.
- PHP Phan (Analyzer) tysonandre.php-phan. Phan - analizador estático para PHP, minimizando los falsos positivos.
- phpmd linyang95.phpmd. Extensión de VS Code para php, usando phpmd.
El protocolo Git es compatible de forma nativa con VSCode. Sin embargo, existen extensiones para mejorar la gestión del código y de los repositorios. Esta es una lista de extensiones destacadas para esta tarea:
- Git History donjayamanne.githistory: Git History, búsqueda y más (incluido git log).
- GitHub KnisterPeter.vscode-github: Esta extensión de vscode se integra con GitHub.
- GitHub Pull Requests and Issues GitHub.vscode-pull-request-github: Revise y gestione sus pull requests e incidencias de GitHub directamente en VS Code
- gitignore codezombiech.gitignore: Una extensión para Visual Studio Code que le ayuda a trabajar con archivos .gitignore.
- Visual Studio Code Commitizen Support KnisterPeter.vscode-commitizen: Esta extensión de vscode agrega soporte para commitizen.
Esta es una lista de extensiones para dar soporte a Joomla en VSCode:
- Joomla Snippets anibalsanchez.vs-code-joomla-snippets. Fragmentos de código para Joomla. Incluye fragmentos de Joomla 3.x y Joomla 4.
- PHP Getters & Setters phproberto.vscode-php-getters-setters. Crea getters y setters de PHP a partir de las propiedades de una clase.
Esta es una lista de extensiones para dar soporte al desarrollo remoto por SSH:
- Remote - SSH ms-vscode-remote.remote-ssh: La extensión Remote - SSH le permite usar cualquier máquina remota con un servidor SSH como su entorno de desarrollo. Esto puede simplificar enormemente el desarrollo y la resolución de problemas en una amplia variedad de situaciones. Para más información: Desarrollo remoto a través de SSH
- Live Share MS-vsliveshare.vsliveshare: Visual Studio Live Share le permite editar y depurar de forma colaborativa con otras personas en tiempo real, sin importar los lenguajes de programación que esté usando o el tipo de aplicaciones que esté creando. Le permite compartir al instante (y de forma segura) su proyecto actual, y luego, según sea necesario, compartir sesiones de depuración, instancias de terminal, aplicaciones web en localhost, llamadas de voz, ¡y mucho más!
Esta es una lista de extensiones útiles altamente recomendadas para facilitar el desarrollo:
- EditorConfig for VS Code editorconfig.editorconfig Soporte de EditorConfig para Visual Studio Code
- change-case wmaurer.change-case: Cambia rápidamente el formato (camelCase, CONSTANT_CASE, snake_case, etc) de la selección actual o de la palabra actual
- Project Manager alefragnani.project-manager: Le ayuda a acceder fácilmente a sus proyectos, sin importar dónde se encuentren. No vuelva a perder de vista esos proyectos importantes.
Configuración de PHP Debug
La extensión soporta las configuraciones más comunes de PHP XDebug. Integra completamente todas las características de VSCode para depurar scripts PHP.
Para configurar la extensión, visite la documentación oficial
Como configuración de ejemplo para la depuración en VSCode, este es un launch.json común:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
// Server Remote XDebug Port - 9000 is the default XDebug port
"port": 9000,
// Server Remote Path -> Local Project Path
"pathMappings": {
"/app/www": "${workspaceRoot}/www"
}
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
// Local XDebug Port - 9000 is the default XDebug port
"port": 9000
}
]
}
En relación con la configuración de launch.json que requiere felixfbecker/vscode-php-debug, está la configuración del propio PHP XDebug.
En este momento, su entorno de desarrollo podría tener xdebug-2 o xdebug-3. Difieren en los parámetros requeridos. Para configurar PHP XDebug, estos son los ajustes más comunes para php.ini.
Configuración de XDebug 2
[XDebug]
;;;;;;;;;;;;;;;;;;;
; xdebug-2.9.8
;;;;;;;;;;;;;;;;;;;
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
; xdebug.remote_port = 9000
Configuración de XDebug 3
[XDebug]
;;;;;;;;;;;;;;;;;;;
; xdebug-3.0.0
; https://xdebug.org/docs/upgrade_guide
;;;;;;;;;;;;;;;;;;;
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = true
; xdebug.client_port = 9000
Para saber más sobre cómo funciona XDebug internamente para conectarse al Editor, consulte la [documentación](Xdebug 3 — Documentation).
Configuración de phpcs
Para configurar la extensión, visite la documentación oficial. La extensión soporta las configuraciones más comunes de PHP_CodeSniffer.
Por defecto, PHP_CodeSniffer viene con varios estándares de codificación. Una vez instalada la extensión, funciona con PSR2.
"phpcs.standard": "PSR2",
Para configurar la extensión y aplicar los Estándares de codificación de Joomla!, instale las reglas siguiendo la guía oficial. Una vez instalados los Estándares de codificación de Joomla!, configure las opciones de usuario siguiendo esta configuración de ejemplo:
"phpcs.standard": "/home/YOUR-USER/.../Joomla",
Configuración de PHP Intelephense
Para configurar la extensión, visite la documentación de intelephense. La extensión no requiere configuración adicional.
VSCode viene con soporte básico para el lenguaje PHP. Por lo tanto, probablemente sea una buena idea deshabilitar el soporte predeterminado para evitar conflictos:
// Disable basic suggestions
"php.suggest.basic": false,
// To activate code suggestions in comments
"editor.quickSuggestions": { "comments": true },
Como alternativa, también existe una extensión muy popular: PHP IntelliSense felixfbecker.php-intellisense, que ofrece autocompletado avanzado y soporte de refactorización para PHP.
Configuración de PHPUnit
Para configurar la extensión, visite la documentación de vscode phpunit
La extensión integra PHP Unit con VSCode, de modo que todas las características de PHP Unit están integradas con VSCode y también se pueden parametrizar para una mayor integración con la interfaz de usuario.
Este es un ejemplo de configuración de la extensión:
"phpunit.preferRunClassTestOverQuickPickWindow": true,
"phpunit.driverPriority": [
"Path",
"Command",
"Composer",
"Phar",
"Ssh",
"GlobalPhpUnit"
],
Configuración de php cs fixer (Solo para PSR2)
Para configurar la extensión, visite la documentación de vscode php cs fixer. La extensión integra PHP-CS-Fixer con VSCode, de modo que todas las características de PHP-CS-Fixer están integradas con VSCode y también se pueden parametrizar para una mayor integración con la interfaz de usuario.
Para aplicar automáticamente PHP-CS-Fixer a los archivos PHP, configure las opciones de usuario de esta manera:
"[php]": {
"editor.defaultFormatter": "junstyle.php-cs-fixer",
},
"php-cs-fixer.onsave": true,
Configuración de PHP Phan (Analyzer)
Para configurar la extensión, visite la documentación oficial. Este es un ejemplo de configuración de la extensión:
"phan.phpExecutablePath": "/usr/bin/php",
"phan.analyzedFileExtensions": [
"php"
],
Configuración de phpmd
Para configurar la extensión, visite la documentación oficial. La extensión no requiere configuración adicional.
Este es un ejemplo de configuración de la extensión:
"phpmd.command": "php /home/YOUR-USER/.../phpmd/phpmd.phar",
"phpmd.rules": "/home/YOUR-USER/.../phpmd-rulesets/phpmd_config.xml",
Configurar EditorConfig for VS Code
EditorConfig es un formato de archivo y una colección de plugins para editores de texto que permite mantener estilos de codificación consistentes entre diferentes editores e IDEs.
Para configurar el editor según sus preferencias, cree un archivo .editorconfig:
; EditorConfig helps developers define and maintain consistent
; coding styles between different editors and IDEs.
; For more visit http://editorconfig.org.
root = true
; Choose between lf or rf on "end_of_line" property
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
# editorconfig-tools is unable to ignore longs strings or urls
max_line_length = null
[*.html]
indent_style = tab
# PSR-2
# [*.php]
# indent_size = 4
# indent_style = space
# Joomla! Coding Standards
[*.php]
indent_size = 4
indent_style = tab
[*.md]
trim_trailing_whitespace = false
[*.yml]
indent_style = space
indent_size = 2