PHP 8.1
JetBrains a commencé à déployer la prise en charge de PHP 8.1 dans la dernière version majeure - PhpStorm 2021.2 est venu avec une prise en charge complète des enums.
PHP 8.1 RC 2 est sorti, donc la liste des changements dans PHP 8.1 est maintenant définitive. Cela permet d'avoir une idée des fonctionnalités qui vous attendent dans la prochaine version de PhpStorm. Comme d'habitude, vous pouvez essayer de nouvelles fonctionnalités en définissant le niveau de langage du projet sur PHP 8.1. Vous pouvez basculer à partir de la barre d'outils ou en spécifiant l'exigence dans composer.json.
Propriétés readonly
Les propriétés en lecture seule sont des propriétés qui ne peuvent pas être modifiées après l'initialisation, c'est-à-dire après qu'une valeur leur a été affectée. Vous pourriez obtenir un comportement similaire dans les versions précédentes de PHP avec un setter privé, mais le mot-clé readonly rend les classes plus propres et les contraintes plus strictes.
Une propriété en lecture seule ne peut être initialisée que dans la même portée où elle est déclarée. Cela signifie que vous pouvez affecter une valeur soit dans la déclaration elle-même, soit dans une méthode de classe.
Les propriétés avec l'indicateur readonly doivent être typées, mais si vous ne connaissez pas le type spécifique, vous pouvez utiliser le type mixed. Si une propriété en lecture seule est initialisée par un objet, elle ne devient pas immuable. C'est-à-dire que son état interne peut toujours être modifié.
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 a un correctif rapide Alt+Entrée pour cela :
Types d'intersection pure
Les types d'union ont été ajoutés dans PHP 8.0, et maintenant PHP 8.1 introduit les types d'intersection. La syntaxe est TypeA&TypeB, et cela signifie que la variable doit être à la fois instanceof TypeA et instanceof TypeB.
Dans PhpStorm 2021.3, la complétion de code pour cela sera à peu près la même que pour les types d'union, car une union peut contenir des membres de tous les types impliqués, et une intersection doit contenir des membres de tous les types.
La fonctionnalité est appelée types d'intersection pure car les combinaisons avec les types d'union ne sont pas prises en charge et sont laissées pour être pris en compte dans le futur. PhpStorm 2021.3 vérifiera la syntaxe :
Dans les anciennes versions de PHP, il était assez courant d'utiliser des types d'intersection dans les annotations PHPDoc. Ceux-ci seront également pris en charge dans PhpStorm 2021.3, et si vous décidez de passer à PHP 8.1, vous pouvez ajouter une déclaration de type natif :
Nouveau type de retour : never
En PHP 8.1, un nouveau type de valeurs de retour sera disponible : never.
Une fonction ou une méthode déclarée avec le type never indique qu'elle ne retournera pas de valeur et que soit elle lancera une exception soit elle terminera l'exécution du script avec un appel de die(), exit(), trigger_error() ou quelque chose de similaire.
Ce type améliore l'analyse du code, et c'est à peu près la même chose que l'attribut #[NoReturn] a fait dans PhpStorm. C'est donc intéressant que ce soit une fonctionnalité de langage maintenant.
Constantes finales
En PHP 8.1, il sera possible de déclarer des constantes de classe finales, afin qu'elles ne puissent pas être redéfinies dans les classes enfants.
Notez que dans PHP 8.0 et les versions antérieures, les constantes dans les interfaces étaient implicitement finales et vous ne pouviez pas les modifier directement. Mais en PHP 8.1, elles ne sont pas finales par défaut.
Il y a beaucoup d'autres changements à venir dans PHP 8.1. PhpStorm 2021.3 les supportera tous et contribuera à rendre votre code compatible.
Plus pour les génériques
Dans PhpStorm 2021.2, JetBrains a ajouté la prise en charge tant attendue des génériques. Il restait toutefois encore du travail à faire puisqu'elle ne couvrait que les cas d'utilisation de base. Dans le prochain lot d'améliorations pour les génériques, vous aurez :
Prise en charge améliorée pour les Doctrine Collections
JetBrains a ajouté la prise en charge de l'interface IteratorAggregate dans les annotations @template. En conséquence, l'itération sur les Doctrine Collections fonctionne désormais systématiquement.
Prise en charge des futures collections Laravel
Dans la prochaine version de Laravel, le package illuminate/collections reçoit des annotations génériques. Avec PhpStorm 2021.3, vous obtiendrez également une meilleure complétion de code pour ces collections.
Inférence des types génériques à partir du constructeur
Disons qu'il existe un paramètre @template générique dans un constructeur et que vous souhaitez spécifier le type en passant un objet en argument. Cela n'aurait pas fonctionné auparavant, car le type serait manquant et vous n'obtiendriez pas la complétion du code. C'est pourtant désormais possible. Il s'agit également d'un scénario courant pour les collections, qui est pris en charge depuis PhpStorm 2021.2.1.
Prise en charge de l'annotation phpstan-* pour les modèles
PhpStorm prend désormais en charge toutes les annotations pour les génériques. Vous pouvez soit utiliser un préfixe @psalm-* ou @phpstan-*, soit utiliser des balises pures sans préfixe, comme @template.
Déploiement plus rapide et meilleur
Dans PhpStorm 2021.3, il sera possible d'utiliser rsync et plusieurs connexions comme options de déploiement. Cela apporte une amélioration considérable de la vitesse. Il y aura également quelques mises à jour supplémentaires dans ce domaine.
Nouvelle interface utilisateur de débogage
Le débogueur intégré de PhpStorm est un outil puissant qui, en conjonction avec Xdebug, vous aide à explorer le comportement du code et à corriger les bogues. Cependant, sa conception s'est encombrée au fil des ans et, par conséquent, le flux de travail est devenu trop compliqué. Dans PhpStorm 2021.3, il sera plus simple, plus net et plus concis. Le nouveau design est plus moderne et minimaliste, ce qui accélère le flux de travail de débogage et rend les actions populaires plus détectables.
Nouvelle disposition du débogueur
Il y a maintenant une seule barre d'outils horizontale en haut de la fenêtre. JetBrains a supprimé la barre d'outils verticale sur la gauche et réduit toutes les autres. Cette réorganisation de la mise en page permet d'économiser beaucoup d'espace et rend l'interface utilisateur plus intuitive. Les modifications vous aident à mieux vous concentrer sur les tâches de débogage essentielles telles que l'analyse des variables et la navigation dans les frames.
Actions du débogueur
Les actions les plus populaires peuvent désormais toutes être trouvées au même endroit et vous pouvez accéder au reste à l'aide de l'icône Plus. Si la configuration par défaut ne fonctionne pas pour vous, vous pouvez la personnaliser dans Preferences | Appearance & Behavior | Menus and Toolbars | Debug Header Toolbar.
Evaluate expression
JetBrains a également rendu la boîte de dialogue Evaluate expression plus détectable - vous pouvez désormais y accéder directement à partir de la fenêtre d'outil de débogage.
Il y a encore bien d'autres petites nouveautés et améliorations, ainsi que des corrections de bogues dans cette version. Vous pourrez les consulter dans les notes de version.
Nouveautés et téléchargement de PhpStorm 2021.3 EAP