
Hola a todos! ¡Nos complace presentarles el segundo lanzamiento importante de PhpStorm este año!
Puede encontrar una descripción general de la versión en la página " Novedades ". Y debajo del corte, un análisis detallado de todos los cambios notables y nuevas características. (Precaución: ¡muchas fotos!)
Puede descargar la nueva versión en el sitio web o usar la aplicación Toolbox . Como siempre, hay disponible una versión de prueba de 30 días. Los titulares de una suscripción activa a PhpStorm o el paquete Todos los productos pueden usar la versión completa, así como estudiantes y desarrolladores gratuitos de proyectos de código abierto.
PHP 7.4: propiedades escritas
PHP 7.4 promete ser la versión más genial y con más funciones desde PHP 7.0. Mire todos los RFC aceptados en él .
La característica más esperada es, por supuesto, las propiedades escritas , ¡y PhpStorm 2019.2 ya las admite por completo! Incluyendo luz de fondo, salida y resolución de tipo, así como todo tipo de controles.
Si intenta poner algo en la propiedad, PhpStorm le avisará de inmediato.

Pero para prepararse para la migración a PHP 7.4, que se lanzará a fines de noviembre, PhpStorm tiene soluciones rápidas. Para declarar un tipo, puede presionar Alt+Enter
en una propiedad sin un tipo y seleccionar Agregar tipo declarado para el campo . PhpStorm determinará el tipo de una propiedad en función de la información en PHPDoc, el valor predeterminado o una declaración de tipo de argumento si la propiedad se implementa a través de un constructor.

?? = operador (asignación de fusión nula)
El nuevo operador de asignación de cheque nulo corto es bastante útil para expresiones voluminosas.
En PhpStorm, por supuesto, la sintaxis es compatible, pero todavía hay una solución rápida Alt+Enter
para reemplazar. donde sea posible:

El operador de descompresión (...) en matrices
PHP admite el desempaquetado de argumentos utilizando un operador …
desde la versión 5.6. En la próxima versión de PHP, el operador se puede usar en matrices:

PhpStorm analizará el uso del operador para la corrección y se asegurará de que desempaquete solo matrices u objetos transitables y no intente hacer por error algo que el intérprete PHP no admite:

En la próxima versión de PhpStorm 2019.3, planeamos implementar soporte completo y soluciones rápidas para todas las nuevas características de PHP 7.4, incluidas las funciones de flecha, delimitadores en literales numéricos, etc.
Autoinyección de expresiones regulares en PHP
En versiones anteriores de PhpStorm, las expresiones regulares en el código PHP no se resaltaban de manera predeterminada y se mostraban como cadenas regulares. Por supuesto, puede implementar el lenguaje RegExp manualmente, pero no lo hará durante todo el proyecto.
¡PhpStorm 2019.2 agrega soporte completo para clientes habituales en PHP! Esto significa que cuando se preg_*,
funciones preg_*,
en el código preg_*,
plantillas se resaltarán y se comprobará su validez.

¡Además, ahora puede probar la expresión regular directamente en el IDE! Desplácese sobre la plantilla, presione Alt+Enter
y llame a Check RegExp .

Código duplicado resaltado sobre la marcha
Encontrar duplicados en PhpStorm ha existido desde hace bastante tiempo, en el menú Código → Localizar duplicados. Si aún no lo ha probado, pruébelo, ¡y se sorprenderá de cuántas repeticiones puede haber en el proyecto!
En esta versión, el análisis de duplicación ha alcanzado un nuevo nivel y funciona sobre la marcha directamente en el editor. Si copió repetidamente o escribió accidentalmente las mismas piezas, lo sabrá al instante.
Puede ir a otro duplicado o ver todo en una lista en una ventana separada:

Por cierto, estos son buenos candidatos para la refactorización de Extractos .
La nueva inspección se denomina fragmento de código duplicado y está habilitada de forma predeterminada. El umbral de sensibilidad se puede establecer en Preferencias | Editor | Inspecciones | General | Fragmento de código duplicado -> PHP . Y en Preferencias | Editor | Duplicados, puede establecer qué elementos se ignoran al buscar duplicados, por ejemplo, puede ignorar diferentes nombres de variables, métodos o propiedades, así como valores constantes.
Soporte de formato PHPT
¿Te gustaría contribuir a PHP y unirte a PHP Internals? ¡La mejor manera es comenzar con documentación y pruebas! Afortunadamente, no necesita saber C. Para esto, las pruebas para PHP están escritas en archivos .phpt especiales. De hecho, este es un archivo de texto, dividido en varias secciones, algunas de las cuales pueden contener código PHP.
¡Entonces, en PhpStorm 2019.2 también hay soporte para archivos phpt! Las secciones se resaltan, PHP e INI se implementan automáticamente cuando es necesario, funcionan las transiciones a archivos externos en las secciones correspondientes.

Aquí encontrará más información sobre cómo escribir pruebas para PHP: Tutoriales de PHP TestFest , PHP Internals Book y qa.php.net .
Ejecutar Composer a través de cualquier intérprete PHP
Anteriormente, para ejecutar Composer, siempre necesitabas un intérprete PHP local. El problema es que puede no existir en absoluto o el entorno puede no corresponder a la producción. Ahora en PhpStorm 2019.2 puede ejecutar Composer a través de cualquier intérprete configurado en el IDE. Por ejemplo, a través de Docker, Docker-compose, Vagrant o, por ejemplo, un servidor remoto a través de SSH.
Para probar esta función, seleccione Intérprete remoto en Preferencias | Idiomas y marcos | Php | Compositor

¡Seleccione un intérprete existente o agregue uno nuevo!
Soluciones rápidas
Rompemos la lista en varias líneas y viceversa.
Según PSR-2 , una línea de más de 80 caracteres de longitud debe dividirse en varias líneas, cada una de las cuales tiene menos de 80 caracteres. Por lo tanto, si tiene una matriz grande o los argumentos / parámetros de la función no caben en la pantalla, puede presionar Alt+Enter
en ellos y seleccionar Dividir valores separados por comas en varias líneas:

Si de repente, como resultado de la refactorización, la lista se acorta y cabe en una línea, entonces la acción inversa también está disponible: unir valores separados por comas en una sola línea .
Por cierto, aquí es posible que deba ajustar rápidamente la configuración del estilo de código. Para no buscar las opciones necesarias durante mucho tiempo, seleccione este fragmento de código, presione Alt+Enter
y llame a Ajustar configuración de estilo de código . PhpStorm ofrecerá cambiar solo aquellas opciones que sean relevantes para las líneas seleccionadas:

Cambiar construcción
Hemos implementado la capacidad de agregar ramas rápidamente para cambiar los diseños. Presione Alt+Enter
en la expresión de caso sin el cuerpo y llame a la rama Copiar 'interruptor' .
No olvide editar la rama copiada, de lo contrario PhpStorm resaltará la pieza que se repite:

PhpStorm 2019.2 también advertirá si no hay una rama predeterminada en el switch
, y también puede agregarla mediante una solución rápida.
Manipulación de cuerdas
PhpStorm ayudará con las operaciones de cadena de rutina. Independientemente de lo que tenga que hacer con la cadena: divídala en pedazos, cambie las comillas, convierta la concatenación a sprintf
o interpolación, o cualquier otra cosa: presione Alt+Enter
en la cadena y seleccione la acción deseada de la lista.
En esta versión, agregamos un par de chips nuevos a esta lista.
Supongamos que tiene una expresión larga en sprintf
y necesita agregar otro parámetro en lugar de una subcadena. Selecciónelo, presione Alt+Enter
, seleccione Extraer la parte de cadena seleccionada como argumento de función de formato , y PhpStorm colocará el parámetro en el lugar correcto:

También puede separar la subcadena por concatenación:

Vista previa para búsqueda estructural
La búsqueda estructural, o SSR para abreviar, es una herramienta poderosa que le permite buscar piezas de código no solo como texto, sino también como pequeños árboles de sintaxis, mientras indica los tipos de nodos u otros filtros. Pruébelo: Editar -> Buscar -> Buscar estructuralmente ...
El problema con la búsqueda estructural es que describir un patrón de búsqueda puede ser una tarea no trivial. En PhpStorm 2019.2, afortunadamente, ahora puede ver el resaltado en tiempo real en el editor. No es necesario ejecutar la búsqueda una y otra vez para depurar la plantilla.
Imagine, por ejemplo, que desea encontrar todas las llamadas a un método particular de una clase, pero solo aquellas en las que se pasa como parámetro un objeto de otra clase específica. Será difícil encontrar esto con una búsqueda regular, pero con el SSR, ¡al mismo tiempo!

Cliente HTTP
Soporte de formato CURL
Casi todas las herramientas de desarrollo web y documentación ahora brindan la capacidad de copiar una consulta como una cadena cURL.
Ahora esta línea se puede usar en PhpStorm. Cree un archivo con la extensión .http o un nuevo archivo scratch de solicitud HTTP utilizando el método abreviado de teclado Cmd+Shift+N (Ctrl+Shift+Alt+Insert)
, y luego inserte la cadena de consulta cURL. Se convertirá automáticamente en una consulta completa, y luego podrá experimentar convenientemente con encabezados y otros parámetros de consulta.

El cliente HTTP almacena cookies
Supongamos que prueba un servicio y realiza una solicitud de autenticación, y luego, en la siguiente solicitud, llame a un punto final privado. Anteriormente, se perdería una cookie con información de sesión de la primera solicitud. Y en 2019.2 todas las cookies se almacenan y transmiten en solicitudes posteriores.

Si no desea que se guarden las cookies, use la etiqueta @no-cookie-jar
para una solicitud específica.
Control de versiones
Una nueva forma de comprometerse sin diálogo
Suponga que cambia varios archivos en diferentes carpetas de un proyecto. Para confirmarlos, vaya a la pestaña Cambios locales de la ventana Control de versiones , seleccione los archivos necesarios y llame al diálogo de confirmación. En este punto, todo está bloqueado por una ventana emergente y no puede ver el proyecto.
En PhpStorm 2019.2, puede confirmar directamente desde la pestaña Cambios locales .
Ahora, trabajando en la confirmación, puede ver todo el proyecto, el historial y, en general, hacer cualquier cosa en el IDE.

La función está deshabilitada de manera predeterminada. Para probarlo, marque "Confirmar desde los cambios locales sin mostrar un diálogo" en Preferencias | Control de versiones | Diálogo de compromiso.
Recordatorios de archivos relacionados
Cuando realiza una confirmación, PhpStorm 2019.2 puede indicarle que agregue archivos que solían cambiar con frecuencia junto con los que ya seleccionó para la confirmación.

Trabajo mejorado con .gitignore
PhpStorm admite .gitignore
fuera de la caja y resalta los archivos ignorados en la vista Proyecto .
Se ha vuelto un poco más fácil agregar a .gitignore
. Esto se puede hacer en la ventana Control de versiones llamando a Agregar a .gitignore desde el menú contextual en los archivos que aún no se han agregado al sistema de control de versiones.

El archivo .gitignore
ahora tiene finalización de ruta, y mediante Cmd+click
archivo se resaltará en la vista Proyecto .

Puede ocultar columnas de autor, datos o hash en el registro.

Comparar el estado actual con cualquier rama
Para hacer esto, simplemente llame al comando Show Diff with Working Tree desde la ventana emergente Git Branches , que se muestra haciendo clic en el nombre de la rama actual en la esquina inferior derecha.

Historial del directorio desde la vista del proyecto
Puede seleccionar varias carpetas en la Vista de proyecto y ver el historial de cambios para ellas utilizando Git | Mostrar historial desde el menú contextual.

Docker
Movimos Docker a la nueva ventana de Servicios . El propósito de esta ventana es recopilar todas las conexiones y procesos en ejecución en un solo lugar. Hasta ahora, por defecto, PhpStorm incluye Docker y conexiones de bases de datos allí. También puede agregar cualquier configuración de Ejecutar / Depurar a la ventana Servicios . Está disponible en la sección Configuraciones disponibles en Servicios de Ejecutar | Editar configuraciones ...
Todos los servicios se muestran como nodos, pero cada uno de ellos se puede hacer una pestaña separada llamando a Mostrar en nueva pestaña o simplemente arrastrando el nodo con el título de la ventana Servicios .

Ver el sistema de archivos del contenedor Docker
Puede navegar por el contenido del contenedor en la pestaña Archivos .

El editor
Escribir código completado
Si de repente escribiste funtcion
o fnction
lugar de function
, no da miedo, porque el complemento funcionará de todos modos, ya que reconoce este tipo de error tipográfico.

Esto funciona en todos los idiomas y para todos los caracteres: palabras clave, clases, funciones, propiedades, métodos, etc.
Configuración de comportamiento 'Mover Caret a la siguiente palabra'
Puede elegir dónde se colocará el cursor cuando se mueva a través de las palabras. Consulte la sección Movimiento de Caret en Preferencias | Editor | General
< 
Muévase más allá de los corchetes y comillas al presionar Tab
El antiguo chip ahora está habilitado por defecto. Cuando escribe y presiona Tab, en lugar de agregar un carácter de tabulación, el cursor se moverá más allá de las comillas y paréntesis. Para deshabilitar esta función, desactive la casilla de verificación Saltar fuera del corchete de cierre / comilla con Tab al escribir en Preferencias | Editor | General | Llaves inteligentes

El código resaltado está entre comillas o corchetes automáticamente
Otra característica súper útil ahora está habilitada por defecto. Cuando hace clic en una cotización (o paréntesis) para seleccionar un fragmento de código, las comillas (o paréntesis) se agregarán automáticamente al principio y al final de la selección.

Si no le gusta este comportamiento, puede desactivarlo marcando la selección de sonido envolvente al escribir comillas o llaves en Preferencias | Editor | General | Llaves inteligentes
Nuevo diseño predeterminado en macOS
Cambiamos el diseño predeterminado en macOS de Mac OS X a macOS 10.5+. También cambiamos el nombre de los diseños: Mac OS X 10.5 ahora se llama Predeterminado para macOS, y el antiguo Mac OS X ahora es IntelliJ IDEA Classic.
Resaltado de sintaxis para más de 20 idiomas.
Si su proyecto tiene archivos en lenguajes de programación que no sean PHP y JavaScript, entonces PhpStorm 2019.2 se sorprenderá gratamente con el resaltado de sintaxis para Python, Ruby, Go y muchos otros lenguajes. Esto funciona de fábrica y no requiere ninguna configuración adicional.
Con esto, queremos mejorar la experiencia de usar PhpStorm para usuarios que a veces necesitan ver el código en otros idiomas. PhpStorm sigue siendo principalmente un entorno de desarrollo web y PHP , por lo que no planeamos extender el soporte de otros lenguajes más allá de los límites de resaltado.

El resaltado de sintaxis para idiomas adicionales se basa en las gramáticas TextMate. Consulte la lista completa de idiomas admitidos de fábrica en Preferencias | Editor | TextMate Bundles .
Guiones de Shell
En PhpStorm 2019.2, implementamos un amplio soporte para scripts de shell, incluidas adiciones de ruta, refactorización de nombres, generación de código ( Cmd+N/Alt+Insert)
y un paquete de plantillas en vivo ( Cmd+J/Ctrl+J)
.

También se implementó la integración con varias herramientas externas.
Para buscar posibles problemas en los scripts, PhpStorm le sugerirá que instale Shellcheck , que encuentra un montón de problemas y proporciona soluciones rápidas para ellos.
También en PhpStorm 2019.2 se integra con la herramienta mvdan / sh para formatear scripts de shell. Cuando llame al Código de reformateo por primera vez, el IDE le pedirá que lo instale y luego lo formatee correctamente.
Y finalmente, hay integración con el sitio web de Explainshell . Puede seleccionar cualquier comando, presionar Alt+Enter
y seleccionar el shell Explicar . El IDE redirigirá a Explainshell , donde puede ver lo que significa el conjunto seleccionado. Cuando pasa el cursor sobre un comando directamente en el IDE, también se muestra una ayuda.

EditorConfig
Al agregar el archivo .editorconfig , hace que el desarrollo en el equipo sea más agradable, ya que ciertas opciones de estilo funcionarán igual para todos, independientemente del editor utilizado.
Anteriormente, en PhpStorm, era necesario instalar el complemento EditorConfig, pero en 2019.2 está disponible desde el cuadro y no se requieren pasos adicionales.
Puede establecer diferentes configuraciones para diferentes subcarpetas en el proyecto. Simplemente cree archivos .editorconfig
en las carpetas necesarias; puede haber tantos en el proyecto.
¡También puede configurar PhpStorm ! Options en el archivo .editconfig!
Además de las opciones estándar para EditorConfig, puede configurar casi todas las opciones de estilo específicas de PhpStorm. Anteriormente, solo se podían configurar desde la interfaz de usuario. Dichas opciones están indicadas por el prefijo ij_
para diferir de las estándar.

Si crea un nuevo archivo .editorconfig desde Project View , PhpStorm le pedirá que elija qué opciones incluir en el archivo creado. Se agregarán comentados, y los necesarios pueden ser descomentados y cambiados.

Apariencia
Más información en la vista de proyecto
Puede habilitar la visualización del tamaño del archivo y la fecha de modificación en la Vista del proyecto usando Ver -> Descripciones locales .

Un nuevo tipo de información sobre herramientas de inspección
La información sobre herramientas ahora no solo describe el problema, sino que también ofrece la primera solución de la lista. Para aplicarlo instantáneamente, incluso sin una pista o clic, presione Alt+Shift+Enter
. Para ver todas las correcciones disponibles, presione Alt+Enter
.

Interfaz de usuario actualizada en Windows
Nueva vista sin marco en Windows 10:

PhpStorm, como siempre, incluye todas las actualizaciones de WebStorm y de DataGrip. Se puede encontrar una lista completa de los cambios en las notas de lanzamiento muy grandes.
Y finalmente, un video corto (en inglés) con una demostración de las características principales del lanzamiento:
Eso es todo por una vez. ¡Gracias por leer hasta el final! ¡Preguntas, deseos, informes de errores y solo pensamientos expresados en los comentarios! Estaremos encantados de responder.
Su equipo de JetBrains PhpStorm