PhpStorm 2021.3 est disponible avec la prise en charge complète de PHP 8.1
Une meilleure gestion des génériques PHP, le développement à distance et bien d'autres améliorations

JetBrains vient d'annoncer la disponibilité de PhpStorm 2021.3. Il s'agit de la troisième mise à jour majeure de l'année de l'EDI pour le développement Web avec PHP. Cette version introduit une prise en charge complète de PHP 8.1, une meilleure gestion des génériques en PHP, le développement à distance, et des amélioration pour les refactorisations, le déploiement, le client HTTP et l'intégration VCS, entre autres. Nous présentons dans la suite les nouveautés et améliorations de cette version par domaine.

PHP 8.1

Enums

Les enums sont l'une des fonctionnalités les plus attendues de PHP 8.1. PhpStorm 2021.2 a inauguré la prise en charge des enums, avec des suggestions de code et une validation pour vous protéger contre leur utilisation incorrecte.

Un enum en PHP contient un ensemble de cas, peut avoir des méthodes, et peut être utilisé comme un indicateur de type. Dans tous ces cas, PhpStorm met en évidence les erreurs et propose des suggestions appropriées pour vous faire gagner du temps.

Propriétés en lecture seule

Les propriétés en lecture seule sont les propriétés qui ne peuvent pas être modifiées après leur initialisation, c'est-à-dire après qu'une valeur leur a été attribuée.

PhpStorm 2021.3 vous aidera à utiliser les propriétés en lecture seule dans votre code et à vous assurer qu'elles sont utilisées correctement.

Une inspection spécifique vérifiera qu'une propriété en lecture seule n'est initialisée que dans la portée où elle est déclarée, soit dans la déclaration de la propriété elle-même, soit dans une méthode de classe.

Comme les propriétés readonly doivent toujours être typées, PhpStorm vérifiera si la déclaration de type est spécifiée.

Une propriété readonly ne peut pas avoir de valeur par défaut, mais vous pouvez l'initialiser dans le constructeur en tant que propriété promue. PhpStorm propose donc un correctif rapide pour cela.


L'opérateur « new » dans les initialisateurs

En PHP 8.1, vous pouvez utiliser de nouvelles expressions pour initialiser les valeurs des paramètres par défaut, les variables statiques, les constantes globales et les arguments d'attributs.

PhpStorm vérifiera ces occurrences et mettra en évidence les cas non valides tels que l'ajout d'un nouvel objet comme constante de classe ou propriété.

Éléments appelables de première classe

PHP 8.1 vous permet d'obtenir une référence à n'importe quelle fonction à l'aide de la syntaxe des éléments appelables de première classe. Maintenant, au lieu d'écrire $fn = Closure::fromCallable('strlen') ;, vous pouvez utiliser une forme plus courte $fn = strlen(…) ;, et PhpStorm vous proposera un correctif rapide avec Alt+Entrée pour convertir votre code vers la nouvelle syntaxe.


Types intersection purs

PHP 8.1 apporte des types intersection, dont la valeur doit respecter plusieurs contraintes de type au lieu d'une seule.

PhpStorm propose maintenant une saisie semi-automatique du code pour ces constructs et vérifie qu'un type intersection n'est pas combiné avec un type union. Et si vous avez un type intersection spécifié en tant qu'annotation PHPDoc, PhpStorm l'interprétera aussi correctement.

Nouveau type de retour : « never »

PHP 8.1 introduit un type never pour les valeurs de retour. Si une fonction est déclarée avec le type never, elle ne renvoie pas de valeur et lève une exception ou met fin à l'exécution du script (comme le font les fonctions die(), exit() ou trigger_error()).


Constantes finales

En PHP 8.1, vous pouvez déclarer des constantes de classe avec final afin qu'elles ne puissent pas être remplacées dans les classes enfants. PhpStorm vérifiera ces cas.


Fonctions obsolètes

En plus des nouvelles fonctionnalités, PHP 8.1 apporte plusieurs obsolescences visant à améliorer la cohérence et la facilité d'utilisation du langage. PhpStorm vous aidera à repérer ce code obsolète. Voici quelques exemples :

Utilisation obsolète des interfaces Serializable

Au lieu des interfaces Serializable, il est recommandé d'utiliser les méthodes magiques __serialize() et __unserialize(). En PHP 8.1, vous pouvez toujours utiliser Serializable, mais seulement si la classe d'implémentation utilise à la fois __serialize() et __unserialize(). PhpStorm 2021.3 met en évidence le code incorrect et propose un correctif rapide Alt+Entrée pour ajouter les méthodes magiques.


Utilisation restreinte de GLOBALS

L'utilisation de la variable superglobale $GLOBALS en PHP 8.1 est maintenant restreinte. Il n'est pas permis d'effectuer des opérations d'écriture ou de lecture/écriture sur la variable $GLOBALS prise dans son ensemble. PhpStorm mettra en évidence ces utilisations problématiques.


Génériques pour PHP

PHP ne prend pas encore en charge les génériques au niveau du langage, mais leur utilisation via les annotations est déjà devenue assez populaire. Ils rendent le code plus sûr et plus prévisible quand vous travaillez avec des collections, des conteneurs, des factories et d'autres applications. PhpStorm 2021.3 étend la prise en charge des génériques via l'annotation @template.

Amélioration de la prise en charge des Doctrine Collections

PhpStorm prend en charge l'interface IteratorAggregate et l'itération sur les Doctrine Collections fonctionne désormais automatiquement.


Prise en charge des collections Laravel Collections

Dans la prochaine version de Laravel, le paquet illuminate/collections prendra en charge les annotations génériques. PhpStorm 2021.3 offre une meilleure saisie semi-automatique du code pour ces collections.

Déduction des types génériques à partir du constructeur

Si un constructeur comporte un paramètre générique @template et que vous voulez spécifier le type en passant un objet comme argument, PhpStorm déduit maintenant le type correct et vous propose une saisie semi-automatique du code.


Refactorisations

Déplacement des classes par glisser-déposer

Auparavant, pour déplacer une classe et mettre à jour son espace de noms, votre seule possibilité était d'utiliser la refactorisation move (F6) dans l'éditeur de code. Dans PhpStorm 2021.3, vous pouvez utiliser le glisser-déposer dans la vue Project à la place. De cette façon, la structure du projet serait visible pendant l'exploitation. De plus, cette technique permet de déplacer plusieurs classes ou des dossiers entiers. PhpStorm mettra correctement à jour toutes les références.


Fonction ou méthode Inline

La refactorisation Inline method vous permet de remplacer les appels à la méthode par le contenu de la méthode et de supprimer la méthode elle-même. Dans PhpStorm 2021.3, la refactorisation a fait l'objet de plusieurs améliorations pour couvrir encore plus de cas. Par exemple, les méthodes non statiques, les chaînes de méthodes et les fonctions flèches/anonymes passées en paramètre sont désormais prises en charge.

Pour utiliser cette refactorisation, placez le curseur sur une méthode et appuyez sur Ctrl+Alt+N. S'il existe une méthode privée qui n'est utilisée qu'une seule fois dans le code, appuyez sur Alt+Entrée et utilisez le nouveau correctif rapide Inline Method.


Incorporer une variable

La refactorisation Inline variable vous permet de remplacer les références à une variable par la valeur de la variable elle-même. Dans PhpStorm 2021.3, cette refactorisation prend en charge les variables NOWDOC/HEREDOC et apporte plusieurs améliorations à l'ergonomie.

En outre, PhpStorm détecte désormais les variables à usage unique et vous propose un correctif rapide Inline Variable, que vous pouvez appliquer à l'aide de Alt+Entrée.


Développement à distance

PhpStorm 2021.3 est livré avec un ensemble de fonctionnalités de développement à distance pour vous aider à coder, exécuter et déboguer vos projets à partir de n'importe quelle machine. Vous pouvez vous connecter à un serveur distant à partir de l'écran de bienvenue de PhpStorm ou en utilisant JetBrains Gateway, qui est une application légère qui est utilisée comme point d'entrée et connecte tout via SSH.

Avec les workflows de développement à distance, vous aurez l'impression d'exécuter votre EDI localement avec une saisie et une assistance de code sans latence. Vous pourrez développer sur n'importe quelle machine sans être limité par la puissance de vos appareils locaux. Vous pourrez également stocker le codz source hors de votre ordinateur portable. Avec JetBrains Gateway, le code source est conservé côté serveur. En outre, vous pourrez travailler en toute sécurité où que vous soyez. Vos projets sont localisés en toute sécurité sur la machine distante et sont accessibles de n'importe où.

Veuillez noter qu'il s'agit d'une version bêta de la fonctionnalité de développement à distance et que JetBrains travaille toujours activement à son amélioration.

Déploiement

Prise en charge de rsync

Si vous utilisez un serveur SFTP pour le déploiement, vous pouvez activer rsync pour télécharger des fichiers et des dossiers vers ou depuis le serveur avec des vitesses de transfert considérablement augmentées. L'option correspondante Use rsync for download/upload se trouve dans la section Advanced de la configuration du serveur de déploiement.

Vous pouvez configurer le chemin d'accès à l'exécutable rsync dans Settings/Preferences | Tools | Rsync. Pour macOS et Linux, il doit être disponible automatiquement. Pour Windows, il est recommandé d'utiliser Cygwin et OpenSSH.


Retransmission des fichiers dont le téléchargement a échoué

PhpStorm 2021.3 vous permet de retransmettre les fichiers dont le téléchargement vers le serveur a échoué. Dans ce cas, cliquez sur le lien Retry dans la fenêtre d'outil File Transfer.


Prise en charge d'un proxy pour les connexions SSH

Vous pouvez désormais spécifier un serveur proxy HTTP ou SOCKS pour votre configuration SSH dans Settings/Preferences | Tools | SSH Configurations.

C'est également possible d'utiliser le proxy global à l'échelle de l'EDI. Pour cela, cochez la case Use global IDE proxy settings et indiquez les détails du proxy sous Settings/Preferences | Appearance & Behavior | System Settings | HTTP Proxy.


Changement rapide de serveur par défaut pour un projet

PhpStorm 2021.3 fournit un nouveau widget de barre d'état qui indique le serveur par défaut actuel. Lorsque vous gérez plusieurs environnements, vous pouvez basculer entre eux directement à partir de cette barre sans passer par les paramètres.


Client HTTP

Réponses binaires dans le client HTTP

Le client HTTP prend désormais en charge les réponses binaires. Si une réponse reçue est une image, son aperçu s'affichera directement dans la console de réponse.

Redirection de la sortie vers un fichier ou un répertoire personnalisé

Le client HTTP peut désormais rediriger la sortie vers un fichier ou un répertoire personnalisé. Il prend en charge deux opérateurs pour les redirections forcées et logicielles :

L'opérateur >> crée toujours un nouveau fichier, en ajoutant un suffixe -n au nom de fichier s'il existe déjà.
L'opérateur >> ! remplace le fichier s'il existe déjà.

En plus de fournir des chemins de fichiers explicites, vous pouvez maintenant utiliser de nouvelles variables prédéfinies : {{$projectRoot}} pointe vers le dossier racine du projet et {{$historyFolder}} pointe vers le dossier de l'historique des requêtes.

Prise en charge des identifiants de requêtes HTTP

Dans PhpStorm 2021.3, vous pouvez donner un nom à vos requêtes HTTP. Vous pouvez fournir un identifiant en tant que commentaire avec @nom ainsi que du texte dans le séparateur de requêtes (###).

Vous pouvez ensuite appeler une requête par son nom via la fenêtre d'outil Services, à partir des boîtes de dialogue Run Configuration, Run Anything ou Search Everywhere.

Expérience utilisateur

Nouvelle fenêtre d'outil Bookmarks

Dans PhpStorm 2021.3, les fonctionnalités Favorites et Bookmarks ont été réunies en une seule : Bookmarks. Vous pouvez ajouter un signet sur une ligne, un fichier ou un dossier spécifique en appuyant sur F11. Tous les signets ajoutés seront disponibles dans la fenêtre d'outil Bookmarks unifiée.

Aperçu de la source pour Show Usages

La boîte de dialogue Show Usages, que vous pouvez invoquer à l'aide d'un Ctrl+clic sur un symbole, peut désormais afficher l'aperçu du code source par occurrence trouvée. Pour activer l'aperçu, cliquez sur le bouton carré de la barre d'outils.


VCS

Alignement des modifications mises en évidence

Une nouvelle option Align Changes Highlighting figure dans les paramètres de l'écran Diff que vous trouverez sous l'icône d'engrenage. Cette fonction facilite la lecture du Diff, surtout en cas de modifications complexes, car elle aligne les lignes inchangées de manière à les afficher face à face. Cela vous permet de voir plus clairement le code ajouté ou supprimé.


Checkout and Rebase onto Current pour les branches distantes

L'action Checkout and Rebase onto Current vous permet d'extraire la branche sélectionnée et de la rebaser sur une branche actuellement extraite. Auparavant, cela n'était possible que pour les branches locales, mais dans PhpStorm 2021.3, vous pouvez également appliquer cette action aux branches distantes.

Nouvelle action « Push All up to Here »

Si vous avez plusieurs commits prêts à être livrés alors que d'autres sont encore en cours de réalisation, vous préférez peut-être n'envoyer par push que ceux dont vous êtes sûr·e. PhpStorm 2021.3 vous permettra d'envoyer les commits en push jusqu'à celui que vous avez sélectionné dans l'onglet Log de la fenêtre d'outil Git. Sélectionnez le commit nécessaire, cliquez droit dessus et utilisez la nouvelle action Push All up to Here.


Réorganisation des paramètres VCS

La page Version Control dans Settings/Preferences a été simplifiée pour améliorer l'ergonomie. Elle répertorie maintenant tous les paramètres disponibles. Le nœud Git est maintenant divisé en sections correspondant aux processus les plus importants : Commit, Push, et Update. Un nœud séparé pour les Directory mappings a été ajouté. Les opérations en arrière-plan étant désormais activées par défaut, le nœud Background a été supprimé.


Nouveautés et téléchargement de PhpStorm 2021.3