Novedades de PhpStorm 2021.3

PhpStorm 2021.3 es una importante actualización que incorpora la compatibilidad con el recientemente lanzado PHP 8.1, un mejor manejo de los genéricos en PHP y mejoras para la implementación, cliente HTTP e integración con VCS.

PHP 8.1

¡Acabamos de lanzar una nueva versión del intérprete! Vea el vídeo de Brent Roose y los miembros de la comunidad para obtener una visión general de todas las nuevas funciones de lenguaje.

Enums

Una de las características más esperadas de la versión PHP 8.1 son las enums.

La compatibilidad con las enums se incorporó en PhpStorm 2021.2, ofreciendo sugerencias de código y validación para protegerle de su uso incorrecto.

Una enum en PHP contiene un conjunto de casos, puede tener métodos, y se puede usar como consejo de tipo. En todos estos casos, PhpStorm proporciona un resaltado de errores y sugerencias adecuadas para ahorrarle tiempo.

Propiedades de solo lectura

Readonly properties are the properties that cannot be changed after initialization, that is, after a value is assigned to them.

PhpStorm 2021.3 le ayudará a hacer uso de las propiedades de solo lectura en su código y asegurarse de que se utilizan correctamente.

Una inspección dedicada comprobará que una propiedad de solo lectura se inicializa solo en el mismo ámbito en el que se declara, ya sea en la declaración de la propiedad en sí misma o en un método de clase.

Dado que las propiedades de solo lectura deben tener siempre un tipo, PhpStorm comprobará si se especifica la declaración de tipo.

Una propiedad de solo lectura no puede tener un valor por defecto, pero se puede inicializar en el constructor como una propiedad promovida, por lo que PhpStorm ofrece un arreglo rápido para ello.

Operador «new» en los inicializadores

En PHP 8.1, puede utilizar nuevas expresiones al inicializar los valores de los parámetros predefinidos, las variables estáticas, las constantes globales y los argumentos de atributos.

PhpStorm verificará estos usos y destacará los casos no válidos, como proporcionar un nuevo objeto como una propiedad o constante de clase.

Llamables de primer nivel

PHP 8.1 permite obtener una referencia a cualquier función mediante la sintaxis llamable de primer nivel. Ahora, en lugar de escribir $fn = Closure::fromCallable('strlen');, puede utilizar una forma más corta $fn = strlen(...); y PhpStorm le proporcionará un arreglo rápido con Alt+Intro para convertir su código a la nueva sintaxis.

Tipos de intersección puros

PHP 8.1 incorpora tipos de intersección, cuyo valor debe satisfacer múltiples restricciones de tipo en lugar de una sola.

PhpStorm ofrecerá ahora finalización de código para estas construcciones y comprobará que un tipo de intersección no está combinado con un tipo de unión. Y si tiene un tipo de intersección especificado como una anotación PHPDoc, PhpStorm también lo interpretará correctamente.

Nuevo tipo de retorno: «never»

PHP 8.1 introduce un tipo never para los valores de retorno. Si una función se declara con el tipo never, no devolverá un valor y lanzará una excepción o terminará la ejecución del script (al igual que las funciones die(), exit() o trigger_error()).

Constantes finales

En PHP 8.1 se pueden declarar constantes de clase final para que no puedan sobrescribirse en clases secundarias, y PhpStorm verificará estos casos.

Desusos

Además de las nuevas características, en PHP 8.1 se han efectuado varias anulaciones para que el lenguaje sea más coherente y fácil de usar. PhpStorm le ayudará a localizar ese código obsoleto. He aquí un par de ejemplos:

Uso obsoleto de las interfaces Serializable

En lugar de las interfaces Serializable, se recomienda utilizar los métodos mágicos __serialize() y __unserialize(). En PHP 8.1, todavía se puede utilizar Serializable, pero solo si la clase que lo implementa utiliza tanto __serialize() como __unserialize(). PhpStorm 2021.3 resalta el código incorrecto y ofrece un arreglo rápido con Alt+Intro para añadir los métodos mágicos.

Uso restringido de GLOBALS

El uso de la variable superglobal $GLOBALS en PHP 8.1 está ahora restringido; no está permitido realizar operaciones de escritura o lectura/escritura en $GLOBALS como un todo. PhpStorm destacará estos usos problemáticos.

Genéricos para PHP

Por el momento, PHP no ofrece compatibilidad con los genéricos a nivel de lenguaje, pero su uso a través de anotaciones ya ha cobrado bastante popularidad. Hacen que el código sea más seguro y predecible cuando se trabaja con colecciones, contenedores, fábricas y otras aplicaciones. PhpStorm 2021.3 amplia la compatibilidad preliminar con los genéricos a través de la anotación @template.

Mejora de la compatibilidad con Doctrine Collections

PhpStorm incorpora compatibilidad con la interfaz IteratorAggregate y la iteración sobre Doctrine Collections ahora se incluye lista para usar.

Compatibilidad con colecciones Laravel

In the upcoming Laravel release, the illuminate/collections package will support generics annotations. PhpStorm 2021.3 proporciona una mejor finalización de código para dichas colecciones.

Inferir tipos genéricos desde el constructor

Si hay un parámetro genérico @template en un constructor y desea especificar el tipo pasando un objeto como argumento, PhpStorm ahora inferirá el tipo correcto y proporcionará finalización de código.

Refactorizaciones

Mover clases con solo arrastrar y soltar

Antes, para mover una clase y actualizar su espacio de nombres, su única opción era utilizar la refactorización de mover (F6) en el editor de código. En PhpStorm 2021.3, puede utilizar la función de arrastrar y soltar en la vista Project. De este modo, la estructura del proyecto sería visible durante su funcionamiento. Y, lo que es más, puede mover varias clases o carpetas enteras usando esta técnica, y PhpStorm actualizará correctamente todas las referencias.

Función o método inline

La refactorización Inline method le permite reemplazar las llamadas al método con el contenido del método y eliminar el propio método. En PhpStorm 2021.3, se han añadido numerosas mejoras a la refactorización y cubrirá aún más casos. Por ejemplo, ahora se admiten los métodos no estáticos, las cadenas de métodos y las funciones de flecha/anónimas pasadas como parámetros.

Para utilizar esta refactorización, sitúe el signo de intercalación en un método y pulse Ctrl+Alt+N. Si hay un método privado que se usa solo una vez en el código, pulse Alt+Intro y utilice el nuevo arreglo rápido Inline Method.

Variable inline

La refactorización Inline variable permite sustituir las referencias a una variable por el valor real de esta. En PhpStorm 2021.3, esta refactorización es compatible con el inlining de variables NOWDOC/HEREDOC e incluye varias mejoras de usabilidad.

Además, PhpStorm ahora detectará las variables con un solo uso y le proporcionará un arreglo rápido Inline Variable, que puede aplicar utilizando Alt+Intro.

Implementación

Compatibilidad con rsync

Cuando se utiliza un servidor SFTP para la implementación, se puede habilitar rsync para cargar y descargar archivos y carpetas, lo que aumentará considerablemente la velocidad de transferencia. La opción correspondiente Use rsync for download/upload se encuentra en la sección Advanced de la configuración del servidor de despliegue.

La ruta del ejecutable de rsync se puede configurar en Settings/Preferences | Tools | Rsync. Para macOS y Linux, debería estar disponible de inmediato. For Windows, it is recommended to use Cygwin and OpenSSH.

Retransmitir los archivos que no se han podido cargar

PhpStorm 2021.3 le permite retransmitir los archivos que no se hayan cargado bien. En estos casos, haga clic en el enlace Retry de la ventana de herramientas File Transfer.

Compatibilidad con un proxy para las conexiones SSH

Ahora puede especificar un servidor proxy HTTP o SOCKS para su configuración SSH en Settings/Preferences | Tools | SSH Configurations.

También es posible utilizar el proxy global del IDE. Para ello, active la casilla Use global IDE proxy settings e indique los detalles del proxy en Settings/Preferences | Appearance & Behavior | System Settings | HTTP Proxy.

Cambiar rápidamente el servidor predeterminado para el proyecto

PhpStorm 2021.3 ofrece un nuevo widget de barra de estado que muestra el servidor actual predeterminado. Cuando necesite tratar con varios entornos, puede cambiar entre ellos directamente desde ahí sin tener que ir a los ajustes.

Cliente HTTP

Respuestas binarias en el cliente HTTP

El cliente HTTP ahora admite respuestas binarias. Si una respuesta recibida es una imagen, verá su vista previa directamente en la consola de respuesta.

Redirección del resultado a un archivo o directorio personalizado

El cliente HTTP ahora es capaz de redirigir el resultado a un archivo o directorio personalizado. Admite dos operadores para las redirecciones forzadas y suaves:

  • El operador >> siempre crea un archivo nuevo, añadiendo el sufijo -n a un nombre de archivo si ese archivo ya existe.
  • El operador >>! reescribe el archivo si ya existe.

Además de proporcionar rutas de archivos explícitas, ahora puede utilizar nuevas variables predefinidas: {{$projectRoot}} indica la carpeta de raíz del proyecto y {{$historyFolder}} indica la carpeta del historial de solicitudes.

Compatibilidad con identificadores de solicitudes HTTP

En PhpStorm 2021.3, puede dar nombre a sus solicitudes HTTP. Puede indicar un identificador como comentario con @name así como texto en el separador de solicitudes (###).

A continuación, puede invocar una solicitud por su nombre a través de la ventana de herramientas Services, desde los cuadros de diálogo Run Configuration, Run Anything o Search Everywhere.

Experiencia de usuario

Nueva ventana de herramientas Bookmarks

En PhpStorm 2021.3, las funciones de Favorites y Bookmarks se han fusionado en una sola: Bookmarks. Puede añadir un marcador en una línea, archivo o carpeta específica pulsando F11. Todos los marcadores añadidos estarán disponibles en la ventana de herramientas unificada Bookmarks.

Vista previa de fuente para mostrar usos

El cuadro de diálogo Show Usages, que puede invocar con Ctrl+clic en un símbolo, ahora puede mostrar la vista previa del código fuente por uso encontrado. Para activar la vista previa, haga clic en el botón de la barra de herramientas Icon of the toolbar button.

VCS

Alinear resaltado de cambios

Hemos añadido la nueva opción Align Changes Highlighting a los ajustes de la pantalla Diff que encontrará en el icono del engranaje. Esta función facilita la lectura de Diff, sobre todo cuando hay modificaciones complejas, porque alinea las líneas no modificadas para que aparezcan una al lado de la otra. Esto le ayuda a ver más claramente el código que se ha añadido o eliminado.

Checkout and Rebase onto Current para ramas remotas

La acción Checkout and Rebase onto Current le permite extraer la rama seleccionada y volver a situarla sobre una rama que está actualmente extraída. Antes, esto solo era posible para las ramas locales, pero en PhpStorm 2021.3, esta acción se puede aplicar también a las ramas remotas.

Nueva acción «Push All up to Here»

Si tiene varias confirmaciones listas para su envío, mientras que otras están todavía en curso, quizá desee hacer push solo de aquellas de las que esté seguro. PhpStorm 2021.3 le permitirá hacer push de las confirmaciones hasta la que haya seleccionado en la pestaña Log de la ventana de herramientas Git. Seleccione la confirmación que desee, haga clic con el botón derecho y utilice la nueva acción Push All up to Here.

Configuración de VCS reorganizada

La página Version Control en Settings/Preferences se ha simplificado para mejorar su utilidad, y ahora muestra todos los ajustes disponibles. El nodo Git ahora está dividido en secciones que unen los procesos más importantes: Commit, Push y Update. Se ha añadido un nodo independiente para Directory mappings. Dado que las operaciones en segundo plano están ahora activadas de forma predeterminada, se ha eliminado el nodo Background.