Quoi de neuf dans PhpStorm 2020.2

Prise en charge des types d'union PHP 8, nouveau moteur de flux de contrôle pour PHP, refactorisation Extract Class, prise en charge complète des requêtes pull GitHub, tout nouveau widget d'inspections et prise en charge d'OpenAPI.

Types d'union PHP 8

Nous avons commencé la prise en charge de PHP 8 avec les types d'union. En PHP 8.0, il sera possible de déclarer plusieurs types pour les propriétés, les arguments et les types de retour. PhpStorm prend déjà entièrement en charge cette fonctionnalité et peut vous aider à migrer efficacement.

Conversion de PHPDoc en types d'union natifs

Conversion de PHPDoc en types d'union natifs

Auparavant, les types d'union étaient fournis via PHPDoc. PhpStorm met désormais en évidence ce type d'occurrences.

Avec le correctif rapide Alt+Entrée, ils peuvent désormais être convertis en types d'union natifs.

Cela fonctionne partout où les types d'union sont applicables, notamment dans les arguments de fonction, les types de retour et les propriétés. Pour les propriétés, il prend également en compte les valeurs par défaut.

Passer le niveau de langage à PHP 8

Passer le niveau de langage à PHP 8

Pour activer les fonctionnalités liées à PHP 8, vous pouvez passer le niveau de langage à PHP 8 de l'une des manières suivantes :

  • Utilisez le correctif rapide Alt+Entrée directement dans l'éditeur de code.
  • Cliquez sur Preferences | Languages & Frameworks | PHP et utilisez la liste PHP language level.
  • Indiquez la version requise de PHP dans composer.json pour que PhpStorm la retrouve automatiquement.
Effectuer une validation de type

Effectuer une validation de type

PhpStorm analyse les appels, calcule les types possibles et met en évidence les problèmes liés aux types d'union.

Les vérifications fonctionnent à tous les niveaux : propriétés, arguments et valeurs de retour.

Dans les bases de code complexes, elles vous aident à repérer les problèmes au premier coup d'œil. PhpStorm mettra en évidence les endroits qui requièrent votre attention avant même que le code ne soit exécuté.

Détecter les types dupliqués et redondants

Détecter les types dupliqués et redondants

De nombreuses combinaisons de types sont interdites ou redondantes. Par exemple :

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

Elles sont toutes mises en évidence par PhpStorm comme non valides.

Travailler avec des types nullable

Travailler avec des types nullable

Lorsqu'il n'y a qu'un seul type nullable, il est permis d'utiliser soit la notation ?Type ou Type|null en PHP 8.

Mais quand plusieurs types sont combinés avec null, utiliser ?Type1|Type2 est interdit car ambiguë.

PhpStorm met en évidence ces violations et fournit un correctif rapide Alt+Entrée pour les convertir.

Suivre les règles de variance

Suivre les règles de variance

Lors de l'héritage, PHP vous permet de modifier les types si vous suivez ces règles de base :

  • Les types de paramètres sont contravariants, c'est à dire qu'ils peuvent être étendus.
  • Les types de retour sont covariants, c'est-à-dire qu'ils ne peuvent être que réduits.
  • Les types de propriété doivent évaluer vers le même type.

Heureusement, avec PhpStorm, il n'est pas nécessaire de se souvenir de ces règles car il vérifie le code et met en évidence les violations.

Utiliser le pseudotype false

Utiliser le pseudotype false

PHP 8 propose un pseudotype spécial false qui ne peut être utilisé que dans les déclarations de type d'union.

Il est largement utilisé dans la bibliothèque standard, avec strpos() ou array_search() par exemple, et peut être appliqué ailleurs pour indiquer un résultat négatif.

PhpStorm met en évidence les occurrences incorrectes et prend en compte l'inférence de type.

Suppression de PHPDoc redondant

Suppression de PHPDoc redondant

Après l'ajout d'une déclaration de type d'union natif, un PHPDoc peut devenir inutile car il ne fournit aucune information supplémentaire.

Vous pouvez maintenant le supprimer avec un correctif rapide Alt+Entrée.

Nouveau moteur de flux de contrôle

Condition toujours vraie

Condition toujours vraie

PhpStorm peut maintenant analyser des chemins de code complexes et détecter si la condition d'un bloc if-else a du sens ou est redondante.

Le résultat de 'instanceof' est toujours vrai

Le résultat de 'instanceof' est toujours vrai

Comme pour les conditions, PhpStorm est capable de détecter quand les vérifications instanceof sont appropriées, ou si elles sont toujours évaluées comme 'true' en raison du type inféré dans la hiérarchie des types.

Nouvelle action : Type Info

Nouvelle action : Type Info

Cette nouvelle action vous permet de voir le type inféré d'une expression sélectionnée.

Lors du codage, vous pouvez sélectionner une expression et en vérifier le type à l'aide du raccourci Ctrl+Maj+P ou du menu View | Type Info.

L'expression est toujours 'null'

L'expression est toujours 'null'

PhpStorm peut détecter quand la variable sera forcément null. Dans ce cas, l'IDE suggère de simplifier l'expression pour la rendre plus claire.

Améliorations des outils de qualité du code

Améliorations des outils de qualité du code
  • Il est désormais possible d'exécuter des outils de qualité via Docker Compose.
    Pour ce faire, allez dans Preferences/Settings | Languages & Frameworks | PHP, et ajoutez un nouvel interpréteur distant basé sur Docker Compose.
  • L'action de mise en forme peut maintenant être exécutée également via un interpréteur distant pour PHP-CS-Fixer et PHPCBF.
  • Si le ruleset.xml de PHP_CodeSniffer comporte une section "exclude-pattern", PhpStorm en tient maintenant compte et n'analyse pas les fichiers sous le chemin spécifié.

Améliorations de Composer

La gestion des dépendances de Composer peut s'effectuer dans l'éditeur directement dans le fichier composer.json.

Prise en charge des paquets Satis/Packagist personnalisés

Prise en charge des paquets Satis/Packagist personnalisés

Si des sources personnalisées sont spécifiées dans la section « repositories », vous bénéficierez de la saisie semi-automatique pour les paquets personnalisés.

Une icône indique maintenant l'état actuel de la mise en cache des référentiels personnalisés dans la gouttière.

Saisie semi-automatique du code pour plusieurs versions

Saisie semi-automatique du code pour plusieurs versions

Si un paquet comporte plusieurs versions séparées par une virgule ou des barres verticales (||), PhpStorm propose la saisie semi-automatique avec toutes les versions disponibles pour ce paquet.

Auparavant, la saisie semi-automatique était perdue après avoir tapé ~, ^ ou >=, mais elle fonctionne désormais comme prévu avec toutes ces contraintes de plage dans composer.json.

Accès rapide aux paramètres des outils ajoutés en tant que dépendances

Accès rapide aux paramètres des outils ajoutés en tant que dépendances

PhpStorm fournit de nombreuses intégrations avec des outils tiers. Maintenant, si un outil pris en charge est déclaré dans composer.json, une icône de clé s'affichera à côté de lui dans la gouttière. Vous pouvez cliquer dessus pour accéder directement à la section correspondante des préférences.

Refactorisation Extract Class

Refactorisation Extract Class

Si une classe est encombrée et chargée de nombreuses responsabilités supplémentaires, il est désormais possible de la refactoriser en déplaçant les méthodes et les propriétés vers une nouvelle classe à l'aide de la refactorisation Extract Class.

Sélectionnez une fonction, une méthode ou une propriété que vous souhaitez déplacer et appuyez surCtrl+T, puis sélectionnez Extract class.

La refactorisation créera un nouveau fichier, instanciera un objet de la classe dans le constructeur et ajustera automatiquement toutes les utilisations.

Améliorations des outils de ligne de commande

Améliorations des outils de ligne de commande

La prise en charge des interpréteurs distants est désormais disponible pour les outils de ligne de commande PHP.

Sous Preferences/Settings | Tools | Command Line Tool Support,, ajoutez une nouvelle entrée d'outil et choisissez l'un des interpréteurs à distance configurés.

Laravel Artisan sera désormais détecté automatiquement ! Cela signifie que lorsque vous ouvrez un projet Laravel, vous pouvez appuyer sur Ctrl-Ctrl et commencer à taper une commande. PhpStorm fournira la saisie semi-automatique du code et suggérera les commandes disponibles.

Nouvelles inspections

Tableau utilisé avec accès en écriture uniquement

Tableau utilisé avec accès en écriture uniquement

Si un tableau est déclaré et mis à jour quelque part dans le code mais qu'il n'est jamais lu, cela signifie qu'il est très probablement redondant et ajoute du code inutile.

L'inspection détecte de tels cas et vous invite à supprimer le tableau pour améliorer la propreté du code.

La propriété typée peut ne pas être attribuée

La propriété typée peut ne pas être attribuée

Si une propriété typée n'a pas de valeur par défaut, elle est considérée comme non initialisée. La lecture des propriétés non initialisées générera une erreur TypeError (à moins qu'un __get() magique ne soit défini).

PhpStorm détecte les propriétés non initialisées et met en évidence le code qui tente de les lire.

Prise en charge complète des requêtes pull GitHub

L'ensemble du workflow de la requête pull peut maintenant s'effectuer dans PhpStorm et vous n'avez plus besoin d'alterner avec un navigateur. Vous pouvez gérer les requêtes pull, voir la chronologie et les commentaires linéaires, ajouter des commentaires et des révisions, et accepter les modifications.

Prise en charge complète des requêtes pull GitHub

Pour commencer à travailler avec les requêtes pull GitHub, ouvrez la fenêtre d'outils Pull Requests à partir de la barre d'outils ou du menu principal VCS | Git | View Pull Requests.

Sélectionnez ensuite une requête pull dans la liste pour en afficher tous les détails : le message, les noms de branche, l'auteur, etc.

À partir de là, vous pouvez démarrer le processus de révision en vérifiant les fichiers modifiés et en commentant les modifications – au niveau du commit et au niveau de la ligne.

Il est également possible de fusionner des requêtes pull sans quitter l'IDE. Il n'est pas nécessaire de créer une branche locale à partir d'une requête pull, tout fonctionne immédiatement.

Prise en charge d'OpenAPI

PhpStorm 2020.2 prend en charge le plugin OpenAPI Specifications. Il s'agit d'un plugin gratuit développé par JetBrains qui fournit la saisie semi-automatique, la navigation et la validation du code dans les fichiers de spécification OpenAPI (openapi.yaml/openapi.json and swagger.yaml/swagger.json).

Prise en charge d'OpenAPI

Le plugin fournit également les services suivants :

  • Intégration de Swagger UI.
  • Génération de code.
  • Diff de structure intégré entre les spécifications OpenAPI.
  • Icônes de gouttière pour créer des requêtes client HTTP à partir de la spécification.
  • Saisie semi-automatique pour les points de terminaison dans le client HTTP.

Nouveau widget d'inspections et Vue Problems

Nouveau widget d'inspections et Vue Problems

Dans le coin supérieur droit de l'éditeur, vous verrez le tout nouveau widget d'inspections avec un résumé des problèmes du fichier actuel.

  • Cliquez sur les flèches pour passer d'un problème à l'autre (ou utilisez les raccourcis F2 / Maj+F2).
  • Cliquez sur le widget pour afficher une liste de tous les problèmes du fichier dans la fenêtre d'outils Problems.
  • Survolez le widget pour afficher la fenêtre contextuelle des paramètres et choisir les problèmes à mettre en évidence.

Technologies Web

Toutes les nouvelles fonctionnalités et améliorations de WebStorm 2020.2 sont disponibles dans PhpStorm 2020.2, soit prêtes à l'emploi, soit avec des plugins gratuits disponibles dans le réferentiel de plugins.

Prettier comme outil de mise en forme par défaut dans les projets JavaScript

Vous souhaitez utiliser Prettier au lieu de l'outil de mise en forme intégré pour mettre de l’ordre dans votre code ? Avec cette mise à jour, c'est encore plus facile qu'auparavant. Cochez simplement la nouvelle case On code reformat : l'IDE utilisera Prettier à chaque fois que vous remettrez en forme vos fichiers .js, .ts, .jsx et .tsx. De plus, vous pouvez facilement ajouter d'autres types de fichiers.

Meilleure prise en charge pour Vue.js

Prise en charge de Nuxt.js, paramètres du style de code spécifiques à Vue, améliorations concernant Vue dans les projets TypeScript, et bien d'autres atouts ont été ajoutés au cours de l'année écoulée. La prise en charge de Vue dans PhpStorm n'a jamais été aussi avancée !

Gagnez du temps grâce à de nouvelles fonctionnalités pour JavaScript

De nouvelles intentions intelligentes Alt+Entrée vous aideront à effectuer certaines actions plus rapidement. Par exemple, vous pouvez maintenant convertir rapidement une boucle for avec un index numérique en une méthode de tableau forEach. La consultation des commentaires de la documentation dans les fichiers JavaScript et TypeScript est également facilitée car vous pouvez désormais les afficher directement dans l'éditeur, ce qui minimise les distractions.

Contrôle de version

Prise en charge de Git installé dans WSL 2

Prise en charge de Git installé dans WSL 2

PhpStorm 2020.2 prend en charge Git installé dans WSL 2 pour travailler avec des projets situés dans des systèmes de fichiers Linux et Windows.

L'IDE peut basculer entre les exécutables Git en fonction de l'emplacement du projet. Lorsqu'un projet est ouvert à partir de WSL (via le chemin \\wsl$), l'IDE basculera automatiquement vers Git à partir de WSL, et il vous fournira également la possibilité d'utiliser toutes les fonctionnalités concernant Git dans l'IDE.

Nouvelle interface utilisateur pour comparer les branches

Lorsque vous souhaitez comparer deux branches pour voir quels commits n'appartiennent pas à l'une ou à l'autre, PhpStorm 2020.2 affiche les journaux dans l'éditeur et non dans la fenêtre d'outils Git. Cela garantit d'avoir un espace suffisant pour afficher toutes les informations.

Choisissez l'action Compare with Current dans le menu contextuel Git Branches VCS | Branches.

Action Drop commit

Action Drop commit

Vous pouvez maintenant supprimer les commits locaux redondants facilement, en les sélectionnant dans l'onglet Log de la fenêtre d'outils Git et en choisissant Drop Commit dans le menu contextuel.

Squash pour les commits locaux

Squash de commits locaux

Il est également possible de combiner plusieurs commits locaux en un seul commit, par exemple pour nettoyer l'historique avant un push.

Dans la fenêtre d'outils Git, sélectionnez commits puis choisissez Squash Commits… dans le menu contextuel.

L'IDE exécutera un rebase interactif en arrière-plan.

Outils de base de données

Jetez un œil aux Nouveautés de DataGrip 2020.2 – toutes ces fonctionnalités sont également disponibles dans PhpStorm.

Éditeur séparé pour les valeurs de cellule

Éditeur séparé pour les valeurs de cellule

Désormais, si vous avez une valeur énorme dans votre cellule, vous pouvez l'afficher ou la modifier dans un volet séparé. Vous pouvez également basculer le mode de retour à la ligne à l'aide de la barre d'outils de droite. Utilisez toute la puissance de notre éditeur de code pour vos données .

Dialecte Google BigQuery

Dialecte Google BigQuery

Nous avons ajouté un nouveau dialecte SQL : Google BigQuery. La prise en charge complète de BigQuery n'est pas encore disponible, mais il faut bien commencer quelque part. Actuellement, PhpStorm peut correctement mettre en évidence et fournir une assistance de codage pour vos requêtes si vous utilisez Google BigQuery.

Aperçu DML

Aperçu DML

Vous pouvez consulter la requête correspondant à vos modifications dans l'éditeur de données. Un bouton DML est actif si des modifications sont en attente. Cette requête n'est pas le SQL exact qui sera exécuté pour modifier vos données car PhpStorm utilise un pilote JDBC pour mettre à jour les tables, mais la plupart du temps cela sera le même.

Autres améliorations

  • Personnalisation des getters et des setters
  • Resolve pour plusieurs projets dans une même fenêtre
  • Nouvelle action : Add Carets to Ends of Selected Lines