PHP con Visual Studio Code

El pasado 14 de abril Microsoft anunciaba la primera versión de Visual Studio Code, una versión simplificada (muy simplificada) de Visual Studio, orientada a la edición de código. Entre los lenguajes de programación soportados por defecto está PHP y aunque aún le queda mucho camino por delante es un IDE que debemos tener en cuenta.

Sorprende la interfaz tan limpia que tiene, muy de mi agrado personal, y si bien es cierto que parece escasa de opciones dispone de bastantes funcionalidades en los pocos botones que tiene.

Para trabajar con PHP no hace falta hacer nada, dispone de Intellisense de las funciones innatas de PHP no así de las clases propias de nuestro código, sin duda su mayor limitación, aunque existe un proyecto para intentar suplir esta carencia pero a mi en particular no me ha funcionado.

En la parte inferior izquierda tienes varios iconos, el primero te da la opción de gestionar las extensiones, cuando abres una carpeta con archivos PHP tienes una opción interesante que son extensiones recomendadas entre las cuales aparecen PHP Mess DetectorPHP Code Sniffer.



La configuración de estos ya no es tan sencilla, adicionalmente a esto deberíamos tener instalados php, phpmd y phpcs en nuestro ordenador. La instalación de php no la explicaré aquí, sólo voy a explicar como instalar perl, phpmd y phpcs sobre windows.

Primero tenemos que descargar el archivo de instalación de pear desde esta url http://pear.php.net/go-pear.phar y el archivo descargado moverlo al directorio donde tenemos instalado php, luego abrir una ventana de símbolo de sistema con permisos de administrador y navegamos hasta nuestro directorio de instalación de php, en mi caso c:\php, entonces ejecutamos los siguientes comandos:

C:\php>php go-pear.phar

Are you installing a system-wide PEAR or a local copy?
(system|local) [system] : system

Below is a suggested file layout for your new PEAR installation.  To
change individual locations, type the number in front of the
directory.  Type 'all' to change all of them or simply press Enter to
accept these locations.

 1. Installation base ($prefix)                   : C:\php
 2. Temporary directory for processing            : C:\php\tmp
 3. Temporary directory for downloads             : C:\php\tmp
 4. Binaries directory                            : C:\php
 5. PHP code directory ($php_dir)                 : C:\php\pear
 6. Documentation directory                       : C:\php\docs
 7. Data directory                                : C:\php\data
 8. User-modifiable configuration files directory : C:\php\cfg
 9. Public Web Files directory                    : C:\php\www
10. System manual pages directory                 : C:\php\man
11. Tests directory                               : C:\php\tests
12. Name of configuration file                    : C:\WINDOWS\pear.ini
13. Path to CLI php.exe                           : C:\php

1-13, 'all' or Enter to continue:
Beginning install...
Configuration written to C:\WINDOWS\pear.ini...
Initialized registry...
Preparing to install...
installing phar://C:/php/go-pear.phar/PEAR/go-pear-tarballs/Archive_Tar-1.4.0.tar...
installing phar://C:/php/go-pear.phar/PEAR/go-pear-tarballs/Console_Getopt-1.4.1.tar...
installing phar://C:/php/go-pear.phar/PEAR/go-pear-tarballs/PEAR-1.10.1.tar...
installing phar://C:/php/go-pear.phar/PEAR/go-pear-tarballs/Structures_Graph-1.1.1.tar...
installing phar://C:/php/go-pear.phar/PEAR/go-pear-tarballs/XML_Util-1.3.0.tar...
install ok: channel://pear.php.net/Archive_Tar-1.4.0
install ok: channel://pear.php.net/Console_Getopt-1.4.1
install ok: channel://pear.php.net/Structures_Graph-1.1.1
install ok: channel://pear.php.net/XML_Util-1.3.0
install ok: channel://pear.php.net/PEAR-1.10.1
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
PEAR: To install optional features use "pear install pear/PEAR#featurename"

** WARNING! Old version found at C:\php, please remove it or be sure to use the new c:\php\pear.bat command

The 'pear' command is now at your service at c:\php\pear.bat


* WINDOWS ENVIRONMENT VARIABLES *
For convenience, a REG file is available under C:\phpPEAR_ENV.reg .
This file creates ENV variables for the current user.

Double-click this file to add it to the current user registry.

Cómo veis lo he instalado como system y he obviado el warning de la antigua versión encontrada. Es muy importante no tener deshabilitada la función php_uname porque es utilizada en el proceso de instalación.

Instalar PHP Code Sniffer (phpcs)

C:\php>pear install PHP_CodeSniffer
downloading PHP_CodeSniffer-2.6.0.tgz ...
Starting to download PHP_CodeSniffer-2.6.0.tgz (490,951 bytes)
.........done: 490,951 bytes
install ok: channel://pear.php.net/PHP_CodeSniffer-2.6.0

Instalar PHP Mess Detector (phpmd)

C:\php>pear channel-discover pear.phpmd.org
Adding Channel "pear.phpmd.org" succeeded
Discovery of channel "pear.phpmd.org" succeeded

C:\php>pear channel-discover pear.pdepend.org
Adding Channel "pear.pdepend.org" succeeded
Discovery of channel "pear.pdepend.org" succeeded

C:\php>pear install --alldeps phpmd/PHP_PMD
downloading PHP_PMD-1.5.0.tgz ...
Starting to download PHP_PMD-1.5.0.tgz (49,534 bytes)
.............done: 49,534 bytes
downloading PHP_Depend-1.1.4.tgz ...
Starting to download PHP_Depend-1.1.4.tgz (179,584 bytes)
...done: 179,584 bytes
downloading imagick-3.4.1.tgz ...
Starting to download imagick-3.4.1.tgz (239,829 bytes)
...done: 239,829 bytes
install ok: channel://pear.pdepend.org/PHP_Depend-1.1.4
19 source files, building
WARNING: php_bin C:\php\php.exe appears to have a suffix .exe, but config variable php_suffix does not match
ERROR: The DSP imagick.dsp does not exist.
install ok: channel://pear.phpmd.org/PHP_PMD-1.5.0

Y ahora nos queda configurar Visual Studio Code para que ambas extensiones utilicen nuestros archivos recién instalados.


Esto nos abrirá la configuración del entorno por defecto (no editable) y nuestra configuración que deberemos editar con los valores necesarios:


En mi caso sería está (en la primera línea cambio la codificación de mi poryecto porque no es UTF8 que es el valor por defecto, no hay tener miedo de poner un valor erróneo porque Microsoft lo corrige)

{
    "files.encoding": "windows1252",
    "php.validate.executablePath": "C:/php/php.exe",
    "phpmd.validate.executablePath": "C:/php/phpmd.bat",
    "php.validate.run": "onType"
}

Si no instalamos phpmd, phpcs y configuramos nuestro entorno, tendremos errores de este tipo:

  • phpmd: No such phpmd executable phpmd
  • phpcs: Unable to locate phpcs
Y esto es todo por ahora, en cuanto agreguen soporte para svn y corrijan la extensión de Intellisense lo seguiré probando.

Comentarios