Novedades de PhpStorm 2020.2

Compatibilidad con tipos de unión PHP 8, nuevo motor de flujo de control para PHP, refactorización Extract Class, compabilidad total con solicitudes de incorporación de cambios de GitHub, widget de inspecciones totalmente nuevo y compatibilidad con OpenAPI.

Tipos de unión PHP 8

Comenzamos a implementar la compatibilidad con PHP 8 con la compatibilidad con tipos de unión. En PHP 8 será posible declarar más de un tipo para propiedades, argumentos y tipos de retorno. PhpStorm ya es totalmente compatible con esta funcionalidad, y puede ayudarle a migrar correctamente.

Convertir PHPDoc a tipos de unión nativos

Convertir PHPDoc a tipos de unión nativos

Los tipos de unión solían obtenerse vía PHPDoc, y ahora PhpStorm resalta esas ocurrencias.

Con el arreglo rápido Alt+Enter, ahora pueden convertirse en tipos de unión nativos.

Esto funciona en cualquier lugar donde los tipos de unión sean aplicables, incluyendo argumentos de función, tipos de retorno y propiedades. Para las propiedades, también tiene en cuenta los valores predeterminados.

Cambiar el nivel de lenguaje a PHP 8

Cambiar el nivel de lenguaje a PHP 8

Para habilitar las funcionalidades relacionadas con PHP 8, cambie el nivel de lenguaje a PHP 8 de cualquiera de los modos siguientes:

  • Utilice el arreglo rápido Alt+Enter directamente en el editor de código.
  • Vaya a Preferences | Languages & Frameworks | PHP y utilice la lista PHP language level.
  • Especifique el requisito de versión de PHP en composer.json, y PhpStorm lo detectará automáticamente.
Realizar validación de tipo

Realizar validación de tipo

PhpStorm analiza llamadas, calcula posibles tipos y destaca áreas problemáticas relacionadas con los tipos de unión.

Las comprobaciones funcionan a todos los niveles: propiedades, argumentos y valores de retorno.

En bases de código complejas, le ayuda a ver los problemas a primera vista. PhpStorm resaltará las zonas que requieren atención incluso antes de ejecutar el código.

Detectar tipos redundantes y duplicados

Detectar tipos redundantes y duplicados

Hay numerosas combinaciones de tipo prohibidas o redundantes. Por ejemplo:

  • bool|false
  • Foo|Foo
  • object|User
  • iterable|array o iterable|Traversable

PhpStorm resalta todas ellas como no válidas.

Trabajar con tipos anulables

Trabajar con tipos anulables

Cuando hay un solo tipo anulable, se permite utilizar la notación ?Type o Type|null en PHP 8.

Pero cuando hay varios tipos combinados con nulo, utilizar ?Type1|Type2 está prohibido por ser ambiguo.

PhpStorm resalta estas infracciones y ofrece un arreglo rápido Alt+Enter para convertirlas.

Seguir las reglas de varianza

Seguir las reglas de varianza

Durante la herencia, PHP le permite modificar tipos si sigue estas normas básicas:

  • Los tipos de parámetros son contravariantes, es decir, se pueden ampliar.
  • Los tipos de retorno son covariantes, es decir, que solo pueden acotarse.
  • Los tipos de propiedades deben evaluarse con el mismo tipo.

Por suerte, con PhpStorm no es necesario recordar estas normas, puesto que comprobará el código y resaltará cualquier infracción.

Usar pseudotipo falso

Usar pseudotipo falso

En PHP 8 habrá un pseudotipo especial false que puede utilizarse solo en declaraciones de tipo de unión.

Se suele utilizar en la biblioteca estándar, vea strpos() o array_search(), por ejemplo, y puede aplicarse en cualquier otro lugar para indicar un resultado negativo.

PhpStorm destaca las utilizaciones incorrectas y tiene en cuenta la inferencia de tipo.

Quitar PHPDoc redundantes

Quitar PHPDoc redundantes

Tras añadir una declaración de tipo de unión nativo, un PHPDoc puede resultar innecesario, puesto que no ofrece información adicional.

Ahora puede eliminarlo con un arreglo rápido Alt+Enter.

Nuevo motor de flujo de control

Condición siempre verdadera

Condición siempre verdadera

PhpStorm ahora puede analizar rutas de código complejas y detectar si la condición de un bloque if-else tiene sentido o es redundante.

El resultado de ‘instanceof’ siempre es verdadero

El resultado de ‘instanceof’ siempre es verdadero

De forma similar a las condiciones, PhpStorm es capaz de detectar cuándo las comprobaciones instanceof son adecuadas, o si siempre se evalúan como verdaderas debido al tipo inferido en la jerarquía de tipos.

Nueva acción: Type Info

Nueva acción: Type Info

La nueva acción le permite ver el tipo inferido de cualquier expresión seleccionada.

Al escribir código, puede seleccionar una expresión y comprobar su tipo utilizando el atajo Ctrl+Shift+P o el menú View | Type Info.

La expresión siempre es ‘null’

La expresión siempre es ‘null’

PhpStorm puede detectar cuándo se garantiza que la variable sea solo null. En este caso, el IDE sugiere simplificar la expresión para que quede más clara.

Mejoras en las herramientas de calidad

Mejoras en las herramientas de calidad
  • Ahora es posible trabajar con herramientas de calidad mediante Docker Compose.
    Para ello, vaya a Preferences/Settings | Languages & Frameworks | PHP, y añada un nuevo intérprete remoto basado en Docker Compose.
  • La acción de reformateo para PHP-CS-Fixer y PHPCBF ahora también puede ejecutarse a través de un intérprete remoto.
  • Si PHP_CodeSniffer’s ruleset.xml tiene una sección "exclude-pattern", PhpStorm ahora la tendrá en cuenta y no analizará archivos en la ruta especificada.

Mejoras en Composer

Las dependencias de Composer se pueden gestionar directamente desde el editor dentro del archivo composer.json.

Compatibilidad con paquetes personalizados Satis/Packagist

Compatibilidad con paquetes personalizados Satis/Packagist

Si hay fuentes personalizadas especificadas en la sección repositories, dispondrá de finalización para paquetes personalizados.

Ahora, un icono del medianil muestra el estado actual del almacenamiento en caché de repositorios personalizados.

Finalización para versiones múltiples

Finalización para versiones múltiples

Cuando un paquete dispone de múltiples versiones separadas por una coma o tuberías (||), PhpStorm ofrece finalización con todas las versiones disponibles para este paquete.

La finalización solía perderse tras teclear ~, ^ o >=, pero ahora funciona como se esperaba con cualquiera de estas restricciones de rango en composer.json.

Acceso rápido a ajustes de herramientas añadidas como dependencias

Acceso rápido a ajustes de herramientas añadidas como dependencias

PhpStorm ofrece numerosas integraciones con herramientas de terceros. Ahora, si una herramienta compatible se declara en composer.json, aparecerá un icono de llave en el medianil, junto a ella. Puede hacer clic en él para ir directamente a la sección correspondiente de las preferencias.

Refactorización Extract Class

Refactorización Extract Class

Si una clase se ve obstruida y recargada con numerosas responsabilidades adicionales, ahora es posible refactorizarla moviendo métodos y propiedades a una clase nueva con la refactorización Extract Class.

Seleccione una función, un método o una propiedad que desee mover, pulse Ctrl+T y seleccione Extract class.

La refactorización creará un nuevo archivo, instanciará un objeto de la clase en el constructor y ajustará los usos automáticamente.

Mejoras en las herramientas de línea de comandos

Mejoras en las herramientas de línea de comandos

La compatibilidad con intérpretes remotos ya está disponible para herramientas de línea de comando de PHP.

En Preferences/Settings | Tools | Command Line Tool Support, añada una nueva entrada de herramienta y seleccione uno de los intérpretes remotos configurados.

¡Laravel Artisan ahora se detectará automáticamente! Esto significa que, cuando abra un proyecto de Laravel, puede pulsar Ctrl-Ctrl y comenzar a escribir un comando. PhpStorm ofrecerá finalización y sugerirá comandos disponibles.

Nuevas inspecciones

Vector utilizado únicamente con acceso de escritura

Vector utilizado únicamente con acceso de escritura

Si hay un vector declarado y actualizado en algún lugar del código, pero no se lee, significa que muy probablemente el vector sea redundante y añada ruido al código.

La inspección detecta esos casos y le propone que elimine el vector para dejar el código más limpio.

La propiedad con tipo podría no estar asignada

La propiedad con tipo podría no estar asignada

Si una propiedad con tipo no tiene un valor predeterminado, se considera no inicializada. Leer propiedades no inicializadas generará un TypeError (a menos que se defina un mágico __get()).

PhpStorm detecta propiedades no inicializadas y resalta código que trata de leerlas.

Compatibilidad total con las solicitudes de incorporación de cambios de GitHub

Todo el flujo de trabajo de solicitud de incorporación de cambios ahora puede realizarse en PhpStorm, y ya no es necesario ir a un navegador. Puede gestionar solicitudes de incorporación de cambios, ver la línea de tiempo y comentarios de línea, añadir comentarios y revisiones y aceptar los cambios.

Compatibilidad total con las solicitudes de incorporación de cambios de GitHub

Para comenzar a trabajar con solicitudes de incorporación de cambios de GitHub, abra la ventana de herramientas Pull Requests desde la barra de herramientas o desde el menú principal VCS | Git | View Pull Requests.

A continuación, seleccione una solicitud de incorporación de cambios a la lista para ver todos sus detalles: el mensaje, nombres de ramas, autor, etc.

A partir de aquí puede iniciar el proceso de revisión comprobando los archivos modificados y comentando los cambios: tanto a nivel de confirmación como a nivel de línea.

También es posible combinar solicitudes de incorporación de cambios sin salir del IDE. No es necesario crear una rama local desde una solicitud de incorporación de cambios, todo funciona desde el principio.

Compatibilidad con OpenAPI

PhpStorm 2020.2 es compatible con el complemento OpenAPI Specifications. Se trata de un complemento gratuito desarrollado por JetBrains que ofrece finalización, navegación y validación en los archivos de especificaciones de OpenAPI (openapi.yaml/openapi.json y swagger.yaml/swagger.json).

Compatibilidad con OpenAPI

El complemento también ofrece:

  • Integración con la IU de Swagger.
  • Generación de código.
  • Diff de estructura integrado entre especificaciones de OpenAPI.
  • Iconos del medianil para crear solicitudes de cliente HTTP a partir de una especificación.
  • Finalización automática para los terminales en el cliente http.

Nuevo widget de inspecciones y vista de problemas

Nuevo widget de inspecciones y vista de problemas

En la esquina superior derecha del editor, verá el nuevo widget de inspecciones con un resumen de los problemas del archivo actual.

  • Haga clic en las flechas para desplazarse entre incidencias (o utilice atajos F2 / Mayús+F2).
  • Haga clic en el widget para ver una lista de todas las incidencias del archivo en la ventana de herramientas Problems.
  • Pase el puntero del ratón por el widget para ver la ventana emergente de ajustes y seleccione qué incidencias desea resaltar.

Tecnologías web

Todas las nuevas funcionalidades y mejoras de WebStorm 2020.2 están disponibles en PhpStorm 2020.2, y están listas para usar o disponibles con complementos gratuitos en el Marketplace de complementos.

Prettier como formateador predeterminado en proyectos JavaScript

¿Quiere utilizar Prettier en lugar del formateador integrado para organizar su código? Con esta actualización, se ha vuelto incluso más fácil que antes. Solo tiene que marcar la nueva casilla de verificación On code reformat y el IDE utilizará Prettier cada vez que reformatee sus archivos .js, .ts, .jsx y .tsx. También se pueden añadir fácilmente otros tipos de archivo.

La mejor compatibilidad con Vue.js

Compatibilidad con Nuxt.js, configuración con estilos de código específicos de Vue, mejoras relacionadas con Vue en los proyectos TypeScript y muchas otras cosas que añadimos el año pasado. ¡La compatibilidad con Vue en PhpStorm nunca había sido tan avanzada!

Ahorre tiempo con nuevas funcionalidades para JavaScript

Las nuevas intenciones inteligentes Alt+Intro le ayudarán a realizar algunas acciones más rápidamente. Por ejemplo, ahora puede convertir rápidamente un bucle for con un índice numérico en un método de vector forEach. Consultar los comentarios de la documentación en archivos JavaScript y TypeScript también se ha vuelto más sencillo, ya que ahora puede mostrarlos directamente en el editor para minimizar las distracciones.

Control de versiones

Compatibilidad con Git instalado en WSL2

Compatibilidad con Git instalado en WSL2

PhpStorm 2020.2 es compatible con Git instalado en WSL2 para trabajar con proyectos ubicados en sistemas de archivos Linux y Windows.

El IDE puede cambiar entre ejecutables de Git dependiendo de la ubicación del proyecto. Cuando se abre un proyecto desde WSL (a través de la ruta \\wsl$), el IDE cambiará automáticamente a Git desde WSL, y también le permitirá utilizar todas las funcionalidades relacionadas con Git en el IDE.

Nueva IU para comparar ramas

Cuando desee comparar dos ramas para ver qué confirmaciones no corresponden entre sí, PhpStorm 2020.2 mostrará los registros en el editor en lugar de la ventana de herramientas de Git. Esto asegurará que haya suficiente espacio para mostrar toda la información.

Seleccione la acción Compare with Current en el menú emergente de Git Branches VCS | Branches.

Acción Drop Commit

Acción Drop Commit

Ahora puede eliminar fácilmente confirmaciones locales redundantes seleccionándolas en la pestaña Log de la ventana de herramientas Git y seleccionando Drop Commit en el menú contextual.

Haga squash para las confirmaciones locales

Haga squash para las confirmaciones locales

También es posible combinar varias confirmaciones locales en una sola confirmación, por ejemplo para limpiar el historial antes de hacer Push.

En la ventana de herramientas de Git, seleccione confirmaciones y escoja Squash Commits… en el menú contextual.

El IDE efectuará un procedimiento de rebase interactivo en segundo plano.

Herramientas para bases de datos

Eche un vistazo a Novedades en DataGrip 2020.2: todas estas funcionalidades también están disponibles en PhpStorm.

Editor separado para valores de celdas

Editor separado para valores de celdas

Ahora si tiene un valor muy grande en su celda, se puede ver o editar en un panel separado. También puede cambiar entre el modo soft wrap utilizando la barra de herramientas de la derecha. Utilice toda la potencia de nuestro editor de código para sus datos.

Dialecto Google BigQuery

Dialecto Google BigQuery

Hemos añadido un nuevo dialecto SQL: Google BigQuery. Todavía no ha llegado la compatibilidad total con BigQuery, pero siempre hay que empezar por algún lado. Por ahora, PhpStorm puede resaltar correctamente y ofrecerle asistencia a la codificación para sus consultas si utiliza Google BigQuery.

Vista previa de DML

Vista previa de DML

Puede revisar la consulta que representa sus cambios en el editor de datos. Hay un botón DML que está activo si hay cambios pendientes. Esta consulta no es el SQL exacto que se ejecutará para modificar sus datos, porque PhpStorm utiliza un controlador JDBC para actualizar las tablas, aunque en la mayoría de los casos sí será el mismo.

Otras mejoras

  • Personalizar getters y setters
  • Resolve para múltiples proyectos en una ventana
  • Nueva acción: Add Carets to Ends of Selected Lines