Nouveautés de PhpStorm 2020.3

PhpStorm 2020.3 est une mise à jour majeure qui inaugure la prise en charge de PHP 8, PHPStan, Psalm, Tailwind CSS, Xdebug 3 et le développement collaboratif grâce à Code With Me.

PHP 8

PHP 8.0 est une mise à jour majeure du langage qui propose un grand nombre de nouvelles fonctionnalités incroyables. PhpStorm vous aidera à vérifier que votre code est compatible, à mettre à jour votre base de code plus rapidement et à bénéficier des dernières améliorations du langage.

Voir la version du langage

Voir la version du langage

Désormais vous pouvez voir quelle version du langage est utilisée dans un projet. Nous avons placé l'indicateur correspondant dans la barre d'état. Il vous permet également de modifier la version du langage si composer.json ne répertorie aucune restriction concernant la version PHP.

Ajouter des identificateurs d'arguments nommés

Arguments nommés

Les arguments de fonction et de méthode dans PHP 8 peuvent être passés en spécifiant un nom de paramètre. Cela évite d'avoir à définir des paramètres optionnels et assure que les appels sont auto-documentés.

PhpStorm aide à :

  • Vérifier que les noms d'arguments sont corrects.
  • Ajouter automatiquement les noms de paramètres avec un correctif rapide Alt+Entrée.
  • Supprimer les arguments redondants.
Convertir en propriété promue

Promotion de la propriété du constructeur

Cette fonctionnalité vous permet de réduire la quantité de code standard lorsque vous initialisez des variables via un constructeur.

Dans PhpStorm, vous pouvez convertir les propriétés initialisées par le constructeur en propriétés promues ou inversement grâce au correctif rapide Convert to promoted property Alt+Entrée.

Valider les utilisations d'opérateurs nullsafe

Opérateur Nullsafe

Afin de vous épargner le recours à des conditions complexes pour vos vérifications null, le nouvel opérateur ?-> vous permet de construire des chaînes d'appels avec des vérifications implicites de null pour chaque élément.

PhpStorm s'assure que l'opérateur est utilisé correctement.

Convertir la déclaration switch en expression match

Expression match

La nouvelle expression match est une alternative sûre à l'instruction switch. Une expression match peut être utilisée en tant que valeur et affectée à une variable ou renvoyée.

PhpStorm déterminera si un bloc switch peut être converti en expression match et effectuera automatiquement la conversion avec un correctif rapide Alt+Entrée.

Avec la nouvelle expression, il pourrait être plus compliqué de voir les erreurs d'utilisation. C'est pourquoi PhpStorm les mettra en évidence pour vous.

Nouvelles fonctions pour les chaînes

Nouvelles fonctions pour les chaînes : str_contains(), str_starts_with(), str_ends_with()

En PHP 8, vous pouvez utiliser la fonction str_contains() pour déterminer si une chaîne fait partie d'une autre chaîne. PhpStorm 2020.3 attire votre attention sur toute utilisation de strpos() pouvant être remplacée par str_contains().

L'IDE met également en évidence les emplacements où les anciens appels substr() peuvent être remplacés par les nouvelles fonctions plus explicites str_starts_with() et str_ends_with().

Autres fonctionnalités de PHP 8 prises en charge

Autres fonctionnalités de PHP 8 prises en charge

  • Virgule finale après le dernier paramètre dans un appel de fonction et dans la section use des fermetures.
  • Les catchs sans capture sont utiles pour intercepter les exceptions lorsque vous n'avez pas besoin d'un objet d'exception.
  • Throw peut maintenant s'utiliser comme expression (c'est-à-dire qu'il est autorisé dans les fonctions fléchées, l'opérateur de coalescence ?? et l'opérateur ternaire/elvis ?:).
  • Pour obtenir une classe FQN à partir d'un objet, vous pouvez utiliser $object::class au lieu de get_class($object). Pour ce faire, utilisez un correctif rapide Alt+Entrée.

Attributes de PHP 8

Conversion de PHPDoc en types d'union natifs

PHP 8 vous permet d'utiliser des attributes pour spécifier des métadonnées de manière structurée au lieu d'avoir recours aux annotations PHPDoc.

PhpStorm fournit la mise en évidence, la saisie semi-automatique du code, la recherche des occurrences, des refactorisations et l'assistance au codage pour travailler avec les attributes. Il propose également des inspections pour vérifier que les attributes sont déclarés et correctement utilisés.

PhpStorm 2020.3 met plusieurs attributes de PHP 8 à disposition directement dans l'IDE. We also provide them in a composer package jetbrains/phpstorm-attributes, so feel free to add it as a dependency in composer.json.

Attribute #[Deprecated]

#[Deprecated]

Comme la balise PHPDoc @deprecated, vous pouvez utiliser cet attribut pour signaler des méthodes, fonctions, classes ou constantes de classe qui seront supprimées dans les futures versions du logiciel.

Indiquez-en la raison (reason) et le code qui les remplacera (replacement) afin que vos utilisateurs comprennent l'intérêt de la mise à niveau et permettez-leur de l'effectuer automatiquement avec un correctif rapide Alt+Entrée.

Attribute #[ArrayShape]

#[ArrayShape]

Utilisez cet attribute pour définir les clés et les types de valeurs des tableaux similaires à des objets. Cela améliorera l'assistance au codage et l'analyse réalisée par PhpStorm.

Remarque : fonctionne également en PHP 7.4 et versions antérieures si écrit sur une seule ligne.
#[Immutable]

#[Immutable]

Assignez l'attribute #[Immuable] aux objets ou propriétés lorsque vous souhaitez empêcher toute tentative de modification de l'objet après son initialisation.

Cela permet de rendre l'état du programme plus prévisible et de faciliter le débogage.

Ajustez la restriction de portée d'écriture des propriétés en passant l'une des constantes suivantes au constructeur d'attributs : CONSTRUCTOR_WRITE_SCOPE, PRIVATE_WRITE_SCOPE, PROTECTED_WRITE_SCOPE.

Remarque : fonctionne également en PHP 7.4 et versions antérieures si écrit sur une seule ligne.
Attribute #[Pure]

#[Pure]

Signalez les fonctions qui ne produisent aucun effet indésirable comme #[Pure] pour améliorer l'analyse du flux de code dans PhpStorm. L'IDE mettra en évidence les appels redondants de fonctions pures.

En cas de tentative de modification dans le corps d'une fonction signalée comme #[Pure], si cette modification porte sur une variable n'appartenant pas au corps de la fonction, PhpStorm mettra en évidence le code non sécurisé.

Toutes les fonctions internes à PHP de ce type, par exemple array_merge(), sont déjà signalées dans PhpStorm.

Attribute #[ExpectedValues]

#[ExpectedValues]

Utilisez cet attribut pour spécifier les valeurs qu'une fonction accepte en tant que paramètres et celles qu'elle peut renvoyer. Cela améliorera la saisie semi-automatique du code et aidera à détecter les éventuels bugs.

#[ExpectedValues] est une version avancée des expectedArguments() de .phpstorm.meta.php.

Attribute #[NoReturn]

#[NoReturn]

Indiquez les fonctions qui peuvent terminer une exécution de script avec un attribut #[NoReturn] pour obtenir une analyse du flux de contrôle plus précise.

PhpStorm proposera de propager l'attribute dans la hiérarchie avec un correctif rapide pour obtenir une analyse encore plus précise.

Attribute #[Language]

#[Language]

Ajoutez cet attribut aux paramètres de chaîne contenant du texte dans un autre langage, comme RegExp, SQL, etc. Cela révélera des fonctionnalités supplémentaires de PhpStorm.

Prise en charge de Psalm et PHPStan

Ces deux analyseurs statiques peuvent être utilisés dans PhpStorm 2020.3 pour mettre en évidence les problèmes dans l'éditeur. Ajoutez-les en tant que dev-dependencies dans composer.json et activez l'inspection correspondante en cliquant sur l'icône clé anglaise près de l'outil.

PHPStan et Psalm

PhpStorm propose également la saisie semi-automatique pour les balises @psalm-* et tient compte de leurs spécificités, vous n'aurez donc pas de problèmes avec la mise en évidence, les classes non définies, etc. Dans la plupart des cas, il est désormais sûr de supprimer le préfixe @psalm- des balises, ainsi @psalm-return peut devenir @return et @psalm-param, @param.

De nombreux types psalm sont pris en charge, y compris les types scalaires, numériques et avec des constantes. Il en résulte que tout ce qui dépend de l'inférence est maintenant plus précis, qu'il s'agisse des inspections, de la génération de code ou de la saisie semi-automatique.

Xdebug 3

Xdebug 3

Xdebug 3 est une version récente du débogueur PHP. Il est beaucoup plus rapide et facile à configurer.

Pour configurer Xdebug 3, la seule chose à spécifier est XDEBUG_MODE=debug.

Le port de débogage par défaut pour Xdebug est passé de 9000 à 9003. Pour faciliter la migration, PhpStorm écoute les deux ports par défaut. Le port et les autres paramètres de Xdebug peuvent être ajustés dans Preferences/Settings | Languages & Frameworks | PHP | Debug.

Learn more about Xdebug 3 in the Upgrade Guide.

Code With Me

Développement collaboratif via Code With Me

PhpStorm 2020.3 prend en charge Code With Me, un nouveau service de développement collaboratif et de programmation en binôme proposé par JetBrains. Code With Me vous permet de partager le projet actuellement ouvert dans votre IDE avec d'autres personnes et de travailler dessus ensemble en temps réel.

Consultez ces articles pour en savoir plus sur Code With Me.

Tailwind CSS

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

PhpStorm vous permet d'améliorer votre productivité avec Tailwind CSS.

L'IDE complétera automatiquement vos classes Tailwind, vous montrera un aperçu du résultat CSS au survol de la souris et prendra en charge les personnalisations effectuées à l'aide des fichiers tailwind.config.js.

Client HTTP

Exécuter des requêtes Guzzle avec le client HTTP

Exécuter des requêtes Guzzle avec le client HTTP

Guzzle is one of the most popular HTTP clients for PHP. Dans PhpStorm 2020.3, vous pouvez tester des requêtes Guzzle sans exécuter le code réel.

Si la requête est prise en charge, une icône s'affichera dans la gouttière à côté d'elle. Cliquez dessus pour créer un nouveau fichier de travail HTTP aux paramètres préremplis.

Testez la requête, puis enregistrez-la en tant que fichier .http dans votre projet.

Exporter des requêtes HTTP vers cURL

Exporter des requêtes HTTP vers cURL

Pour obtenir une chaîne cURL à partir d'une requête HTTP, appuyez sur Alt+Entrée dans l'éditeur de requêtes HTTP et sélectionnez Convert to cURL and copy to clipboard.

Vous pouvez utiliser la chaîne cURL dans le terminal ou avec le client HTTP de votre choix.

Éditeur

Améliorations de l'édition et de l'aperçu de Markdown

Améliorations de l'édition et de l'aperçu de Markdown

L'IDE peut désormais afficher les diagrammes et les graphiques Mermaid.js. Activez cette fonctionnalité dans Preferences/Settings | Languages & Frameworks | Markdown.

Un bouton Auto-Scroll Preview en haut à droite du volet d'aperçu active et désactive la synchronisation du défilement avec l'éditeur.

Nous avons ajouté plusieurs préréglages de style de code Markdown populaires qui peuvent être utilisés lorsque vous changez la mise en forme du code avec Ctrl+Alt+L. Les paramètres se trouvent dans Preferences/Settings | Editor | Code Style | Markdown.

Amélioration de la vérification d'orthographe et de grammaire

Amélioration de la vérification d'orthographe et de grammaire

Le moteur de vérification grammaticale prend en charge davantage de langues et propose des vérifications de meilleure qualité.

Lorsqu'une erreur est mise en évidence, une fenêtre contextuelle apporte une explication et suggère une correction.

Si vous appuyez sur Alt+Entrée lorsque le curseur est sur le texte en surbrillance, vous pourrez consulter toutes les suggestions de remplacement dans le niveau supérieur, au lieu d'une liste imbriquée comme c'était le cas auparavant.

Diviser l'écran de l'éditeur par glisser-déposer

Diviser l'écran de l'éditeur par glisser-déposer

Ouvrez plusieurs onglets côte à côte en glissant un onglet sur le côté souhaité de l'écran.

Vous pouvez aussi ouvrir des onglets en mode fractionné en appuyant sur Maj+Entrée lorsque vous êtes sur un fichier sélectionné dans vue Project ou dans n'importe quelle fenêtre de recherche.

Onglet Preview

Onglet Preview

Vous pouvez prévisualiser les fichiers dans un onglet particulier sans avoir à les ouvrir. Pour activer cette fonctionnalité, cliquez sur l'icône engrenage dans la vue Project et sélectionnez Enable Preview Tab et Open Files with Single Click. Si vous commencez à modifier un fichier que vous êtes en train de prévisualiser, l'onglet deviendra un fichier ordinaire.

IDE

Améliorations de Search Everywhere

Améliorations de Search Everywhere

Dans la fenêtre contextuelle Search Everywhere (Maj+Maj), les résultats sont présentés de façon légèrement différente. Au lieu d'être regroupés par type, ils sont maintenant regroupés en fonction de leur pertinence par rapport à la requête de recherche.

Il est également possible d'effectuer des calculs mathématiques simples dans Search everywhere. Saisissez des nombres et des opérateurs mathématiques et consultez immédiatement les résultats du calcul. Vous n'avez plus besoin de vous interrompre pour utiliser une application de calcul.

Search Everywhere peut également faire des recherches dans l'historique de Git, sur les branches et les commits entre autres.

Technologies Web

Toutes les nouvelles fonctionnalités et améliorations de WebStorm 2020.3 sont également disponibles dans PhpStorm 2020.3, soit automatiquement, soit par le biais de plugins gratuits à disposition dans la boutique Plugin Marketplace.

TypeScript dans la fenêtre d'outils Problems

TypeScript dans la fenêtre d'outils Problems

Nous avons intégré le service de langage TypeScript dans la fenêtre d'outils Problems et supprimé la fenêtre d'outils TypeScript pour faciliter et centraliser la révision des problèmes de votre code. Nous avons également déplacé les actions précédemment disponibles dans la fenêtre d'outils TypeScript vers un widget dédié sur la barre d'état.

Créer un composant React à partir des utilisations

Créer un composant React à partir des utilisations

Si vous avez un composant React non résolu dans votre code, placez le curseur dessus, appuyez sur Alt+Entrée et sélectionnez « Create class/function component » dans la liste. L'IDE créera le construct de code approprié pour vous.

Contrôle de version

Prise en charge du staging Git

Prise en charge du staging Git

PhpStorm 2020.3 prend en charge la zone de staging Git. Pour l'activer, cochez la case Enable staging area dans Preferences/Settings | Version Control | Git.

Revenez à la fenêtre d'outils Commit en utilisant le raccourci Alt+0 pour voir les fichiers qui sont dans la zone de staging et ceux qui n'y sont pas.

Envoyez des fichiers vers le staging en cliquant sur l'icône + à côté d'eux.

Vous pouvez effectuer le staging sur des lignes précises en utilisant l'icône gouttière située à côté des modifications dans l'éditeur.

Outils de base de données

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

SQL pour MongoDB

SQL pour MongoDB

Vous pouvez maintenant utiliser SQL pour interroger des bases de données MongoDB. PhpStorm 2020.3 supports SELECT queries with clauses such as JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET, and all available MongoDB functions except map, reduce, filter, and let. Pour en savoir plus sur SQL pour MongoDB, lisez cet article de blog.

Prise en charge de Couchbase et nouveaux extracteurs de données

Prise en charge de Couchbase et nouveaux extracteurs de données

PhpStorm prend maintenant en charge le service Couchbase Query. Nous avons également introduit deux nouveaux extracteurs : One-Row, qui vous permet de copier une colonne dans une chaîne séparée par des virgules, et SQL-Insert-Multirow, qui génère une instruction INSERT unique avec plusieurs nouvelles lignes à insérer.