Bonjour, Habr! Nous sommes heureux de vous présenter la première version majeure de PhpStorm cette année!Sous la coupe, une analyse détaillée de tous les changements notables et de nouvelles fonctionnalités. Attention - beaucoup de photos.PhpStorm 2020.1 Toolbox App. 30- . JetBrains .
composer.json
Toutes les actions pour travailler avec les dépendances sont désormais disponibles directement dans le fichier composer.json
et fonctionnent directement dans l'éditeur.Vous pouvez créer un nouveau fichier composer.json à partir du menu contextuel ou par raccourci clavier Ctrl(⌘)+N
. Le modèle de ce fichier se trouve dans Préférences / Paramètres | Editeur | Modèles de fichiers et de codes .
Gestion des dépendancesPour ajouter une dépendance, commencez simplement à écrire le nom du fournisseur et du package, et une liste de saisie semi-automatique avec les options appropriées apparaît. Les versions disponibles de ce package seront proposées
dans le champ version . Pour l'instant, un chariot (^) ou un autre symbole pour spécifier une gamme de versions devra être ajouté manuellement, mais dans les versions futures, nous corrigerons cela.Pour les exigences sur la version de PHP ou la présence d'extensions, l'auto-complétion fonctionnera également.Mise à jour et installation de packagesS'il composer.lock
n'y a pas encore de fichier et qu'aucun package n'est installé, PhpStorm mettra en surbrillance le nom de la section require
et require-dev
. Pour les installer, vous pouvez cliquer sur le bouton Installer dans la barre d'outils au-dessus de l'éditeur. Ou utilisez l'action de clic rapide Alt(⌥)+Enter
et sélectionnez Installer les packages.
Mais si tous les packages ne sont pas installés, PhpStorm mettra en évidence ceux qui manquent. Ensuite, Alt(⌥)+Enter
vous pouvez appeler n'importe lequel d'entre eux et sélectionner Mettre à jour le package ou Mettre à jour tous les packages .À côté de l'exigence de version spécifiée, la version grise sera la version du package réellement installée. Et dans la boîte de dialogue pop-up pour les packages, il y aura des informations de packagist.org sur le nombre de téléchargements et d'étoiles.
PhpStorm prend toutes les informations sur les packages et leurs versions de packagist.org et les met en cache.Navigation vers des fichiers et des dossiersVous savez sûrement qu'en cliquant sur Ctrl(⌘)+Click
et Ctrl(⌘)+B
vous pouvez aller à la définition des entités ou rechercher leur utilisation.En composer.json
cela aussi, cela fonctionnera. Si vous cliquez Ctrl(⌘)+Click
sur un package, le répertoire correspondant sera mis en évidence dans l'arborescence du projet. Et si sur un fichier, il sera ouvert dans l'éditeur.
En cliquant sur Ctrl(⌘)+Click
ou Ctrl(⌘)+B
sur n'importe quel lien, vous l' composer.json
ouvrirez dans le navigateur.Complétion automatiquedans les sections de chargement automatique (-dev) La saisie semi-automatique basée sur les informations des classes et la structure de répertoires du projet fonctionne pour les espaces de noms et les chemins.
Ctrl(⌘)+Click
et Ctrl(⌘)+B
pour accéder aux fichiers et dossiers fonctionne ici aussi.Améliorations pour les scriptsPremièrement, les transitions vers des fichiers / dossiers / méthodes fonctionnent de la même manière. Deuxièmement, les alias des équipes sont pris en charge. Et troisièmement, les scripts peuvent être lancés à partir de l'éditeur en appuyant sur le bouton [play] en face du nom du script.Cela crée automatiquement une configuration d'exécution. Cela signifie que vous pouvez réexécuter le script avec un raccourci clavier Ctrl(⌃)+R
, ce qui est très pratique lors du débogage:
Installation d'outils de qualité de codeS'il existe des dépendances de développementFriendsOfPHP/PHP-CS-Fixer
, PhpStorm vérifiera si l'inspection appropriée est activée et si l'ensemble de règles est installé. Sinon, vous pouvez appeler Alt(⌥)+Enter
pour le réparer:
Améliorations de l'inférence de type PHP
Le moteur d'inférence de type est le fondement de PhpStorm, et dans cette version, quelques modifications notables ont été apportées.Surlignage supplémentaire des balisesvarL'ajout de balises @var
est un bon moyen de dire à PhpStorm le type d'une variable. Mais nous améliorons constamment l'inférence de type, et certaines de ces déclarations pourraient bien être redondantes, car PhpStorm connaît déjà le type de la variable.Ces cas seront mis en évidence et ils peuvent être supprimés à l'aide de la correction rapide Alt(⌥)+Enter
-> «Supprimervar» : Le
suivi des types nuls est une tâche difficile, et il y avait des endroits où PhpStorm ne pouvait pas le gérer. Maintenant en 2020.1 PhpStorm sait quand une variable peut être nulle et quand non.Voici quelques exemples:
Saisie semi-automatique pour un tableau initialiséSupposons que vous ayez un tableau avec des éléments connus et que vous essayiez plus tard de le parcourir. Auparavant, la saisie semi-automatique ne fonctionnait pas ici, car les informations de type étaient perdues. En 2020.1, tout fonctionne: la
saisie semi-automatique dans array_map / array_filter.Dans le corps de fermeture, qui est transmis aux fonctions array_map () et array_filter (), le complément d'arguments fonctionne désormais.
Couverture de code à l'aide de PCOV et PHPDBG
Vous pouvez créer une couverture de code avec Xdebug . Mais comme il s'agit principalement d'un débogueur, il a des frais généraux décents. Pour accélérer l'obtention d'un rapport de couverture, vous pouvez utiliser des outils plus légers: l' extension krakjoe / pcov ou PHPDBG intégré à PHP 5.6+.Les deux sont désormais pris en charge dans PhpStorm. Vous devez créer une configuration d'exécution pour les tests et sélectionner le pilote de couverture souhaité dans les paramètres. Exécutez ensuite les tests avec calcul de couverture en cliquant sur le bouton
:
En savoir plus sur les différences de calcul de couverture entre Xdebug, PCOV et phpdbg dans README .
PHPUnit Toolkit
Dans la version récente de PHPUnit 9 (et déjà 9.1), de nombreuses fonctionnalités ont été supprimées ou obsolètes. Pour accélérer la migration et éviter les erreurs, nous avons ajouté un tas d'inspections et de solutions rapides.
Créer un nouveau test pour la classeEn appelant Alt(⌥)+Enter
la déclaration de classe et en sélectionnant Créer un nouveau test PHP, vous pouvez rapidement obtenir le squelette du test.
Métadonnées
Les métadonnées du fichier .phpstorm.meta.php
permettent à PhpStorm de fournir des informations supplémentaires sur votre projet et ainsi d'améliorer la complétion du code. Par exemple, cette fonctionnalité est utilisée dans le plugin Symfony et dans Laravel IDE Helper .Vous pouvez en savoir plus sur les capacités des métadonnées à partir d'un rapport PHP en tant qu'outil de développement pour PhpStorm sur PHP Russie 2019.
PhpStorm 2020.1 a ajouté un certain nombre d'améliorations pour les métadonnées.Les directives d'indexation des paramètres remplacent, mappent et tapentAvant d'utiliser override()
, map()
et type()
vous pouvez modifier le comportement des premières fonctions d'argument. Dans PhpStorm 2020.1, vous pouvez spécifier un index de paramètre arbitraire:
Accès aux propriétés via __getSi vous avez reçu des valeurs de propriété par magie __get()
, les informations sur le type ont été perdues. Il était possible d'utiliser des balises supplémentaires @var
ou @property
, mais cela n'a pas toujours été enregistré. Vous pouvez maintenant tout spécifier via des métadonnées.
La saisie semi -automatique des clés dans les objets implémentant lesmétadonnées ArrayAccess prend en charge les objets ArrayAccess, mais suggère uniquement le type de valeurs. Désormais, les touches possibles se complètent automatiquement.
Points de sortie personnalisésPhpStorm prend en compte les fonctions de type die()
et / exit()
ou la levée d'exceptions pour terminer l'exécution. Mais les applications peuvent avoir des points de sortie plus complexes. Par exemple, fonction simple dd()
ou trigger_error avec l'argument E_USER_ERROR .Dans PhpStorm 2020.1, vous pouvez marquer des fonctions comme points de sortie, et cela ajustera l'analyse de flux en conséquence.
Icônes des fonctions redéfinies via les métadonnéesEn face des déclarations de fonctions dont le comportement a été modifié avec override()
, exitPoint()
ou expectArguments()
, une icône sera affichée. Cliquer sur l'icône ouvrira un fichier .phpstorm.meta.php
dans lequel le comportement change, car il peut y avoir plusieurs fichiers.
Les icônes peuvent être masquées dans Préférences / Paramètres | Editeur | Général | Icônes de gouttière .Apprentissage automatique pour trier la liste des modules complémentaires
Ajout du classement des options de complétion automatique basé sur l'apprentissage automatique.Comment voir ML en action?La complétion automatique avec ML est désactivée par défaut. Nous ne voulons pas que les robots nous volent notre travail! Pour l'activer, accédez à Préférences / Paramètres | Editeur | Général | Code Completion et activez les options Classement des suggestions d'achèvement basées sur Machine Learning et PHP .Si vous activez également l'option Afficher les changements de position dans la fenêtre contextuelle de complétion , la liste de complétion automatique montrera comment l'ordre des éléments a changé.
Nous prévoyons d' empêcher le soulèvement des voitures de continuer à travailler dans ce sens dans les futures versions.Nouvelles inspections
Une propriété privée peut être une variable locale.Une définition de propriété sera mise en évidence si elle est utilisée dans une seule méthode et y est immédiatement remplacée. Pour résoudre ce problème, vous pouvez appeler le correctif rapide Alt(⌥)+Enter
«Remplacer la propriété par une variable locale» .
Initialisation de propriété supplémentaireSupposons qu'une propriété privée ait une valeur par défaut dans une classe, mais dans le constructeur, elle est immédiatement remplacée par une autre valeur. Dans ce cas, la valeur par défaut est redondante et n'ajoute que du bruit.Un initialiseur inutilisé sera mis en surbrillance et il peut être supprimé avec une solution rapide Alt(⌥)+Enter
«Supprimer l'initialiseur redondant» .
Changer le type de propriété en PHP 7.4 en valeur par défaut
Opérateur ternaire redondantPhpStorm mettra en évidence les expressions ternaires triviales et avec une solution rapide, Alt(⌥)+Enter
vous pouvez les remplacer par des expressions plus simples:
Transfert redondant par référence L'utilisation du transfert par référence peut entraîner des conséquences inattendues, et c'est l'une des raisons pour lesquelles Nikita Popov a suggéré d'autoriser le transfert explicite par référence lors de l'appel fonctions en PHP.En attendant, PhpStorm 2020.1 mettra en évidence les paramètres déclarés comme passés par référence, mais non utilisés en tant que tels. Ils peuvent être retirés en toute sécurité avec une solution rapide Alt(⌥)+Enter
.
La même chose fonctionnera pour les tableaux avec un lien dans la boucle foreach:
Supprimez le PHPDoc supplémentaire , dans lequel seule la déclaration de type est désormais également assez simple grâce au correctif rapide correspondant.
Certes, par défaut, l'inspection est au niveau Info , c'est-à-dire qu'elle ne sera pas mise en évidence. Si vous souhaitez mettre en surbrillance les blocs PHPDoc redondants, inspectez le commentaire PHPDoc redondant dans Préférences | Editeur | Inspections, définissez le niveau d' avertissement faible ou supérieur.Mise à jour de la refactorisation «méthode Move»
Parfois, il peut être nécessaire de transférer une méthode dans une autre classe. Si cette méthode est utilisée plusieurs fois dans le code du projet, PhpStorm peut vous aider ici.Auparavant, vous deviez d'abord rendre la méthode statique, puis appeler une autre action pour la transférer. Dans PhpStorm 2020.1, le refactoring de la «méthode Move» a été retravaillé en une seule action atomique. Suppression des étapes et des pop-ups supplémentaires, et tout est fait en une seule fois.Passez la souris sur une méthode et appuyez sur F6
(ou Ctrl+T
, 3
). Sélectionnez ensuite la classe cible et vous avez terminé.
Pour voir tous les refactorings disponibles , vous pouvez cliquer Ctrl+T
n'importe où dans le code.
Débogage PHP dans le client HTTP
Maintenant, pour activer le débogage de manière sélective, vous n'avez pas besoin de vous soucier des paramètres de demande ou d'installer l'extension dans le navigateur. Il suffit de créer une requête HTTP dans un fichier .http
et de l'envoyer avec la commande PHP Debug , disponible dans le menu Alt(⌥)+Enter
ou en cliquant sur l'icône. En conséquence, un cookie sera automatiquement ajouté à la demande XDEBUG_SESSION
.
Et encore quelques petites choses pour PHP
@ les éléments obsolètes sont affichés comme barrés dans l'arborescence Structure.Ctrl(⌘)+F12
Surlignage des balises correspondantes <? php /?>
Aller au crochet d'ouverture / fermetureShift+Ctrl+M (⌃+M)
Personnalisation de Lexer pour TwigParfois, vous devrez peut-être modifier les caractères des balises pour les modèles Twig, par exemple, si vous utilisez également Angular, qui en a même syntaxe.Vous pouvez le faire dans les Préférences / Paramètres | Langues et cadres | PHP | Brindille .IDE
Grammaire et orthographe avancées Grazie
Le plugin Grazie est inclus dans PhpStorm prêt à l'emploi, qui vérifie le texte non seulement pour les fautes d'orthographe, mais aussi pour la grammaire et le style. De plus, 16 langues sont prises en charge et toutes les vérifications sont effectuées localement sans envoyer vos données n'importe où.
Par défaut, les vérifications sont activées pour les fichiers Markdown.Vous pouvez également les inclure pour tous les littéraux de chaîne, les commentaires, les blocs PHPDoc et les messages de validation.Pour PHP, vous pouvez activer dans Paramètres / Préférences | Editeur | Relire | Grammaire .Mode LightEdit
Parfois, vous devez regarder / réparer rapidement le fichier et ouvrir un IDE entier pour cela, cela semble trop, mais vous voulez avoir le rétro-éclairage et les fonctions habituelles. C'est pour de tels cas que nous travaillons sur le mode LightEdit léger.Cela fonctionne comme ceci: si vous ouvrez le fichier à partir de la ligne de commande ou du menu contextuel du système d'exploitation, alors que PhpStorm n'est pas en cours d'exécution, le fichier s'ouvrira dans LightEdit. Eh bien, si un PhpStorm à part entière fonctionne déjà, le fichier s'ouvre simplement dedans.

Mode Zen
Le nouveau mode combine sans distraction et plein écran pour une immersion profonde dans le code.Voir | Apparence | Entrez en mode Zen
Interface
Fractionnement de la fenêtre du terminal
Au lieu d'ouvrir de nouveaux onglets et de basculer entre eux, vous pouvez maintenant diviser l'écran et ouvrir plusieurs sessions dans un seul onglet. Pour ce faire, sélectionnez Fractionner horizontalement / verticalement dans le menu contextuel du terminal . Thème
IntelliJ LightLe thème light a été légèrement mis à jour et unifié pour être identique sur tous les systèmes d'exploitation, et son nom est devenu IntelliJ Light .Personnalisation de la barre d'étatDans le menu contextuel, vous pouvez choisir les informations qui y seront affichées.
Configuration
Configuration SSH unifiée
Auparavant, si une connexion SSH était réutilisée dans un déploiement, un interpréteur distant ou un terminal SSH, elle devait être reconfigurée à chaque fois.Désormais, toutes les connexions SSH peuvent être ajoutées / modifiées dans Préférences / Paramètres | Outils | Configuration SSH , puis utilisez-les à plusieurs reprises là où vous en avez besoin.
Le chemin vers les configurations IDE a changé
Par exemple, sur macOS:- ~/Library/Preferences/PhpStorm2019.3
+ ~/Library/Application Support/JetBrains/PhpStorm2020.1
Plus dans l' aide .Chemin personnalisé pour enregistrer les configurations d'exécution
Auparavant, les configurations .idea
d'exécution étaient stockées dans un dossier que beaucoup ajoutent complètement à .gitignore (mieux comme ça ). Vous pouvez maintenant choisir n'importe quel chemin et partager la configuration d'exécution avec des collègues via le système de contrôle de version.Cela peut être particulièrement pratique lors de l'intégration de nouveaux employés: retirer un projet, ouvert dans PhpStorm, lancé avec un seul bouton.Pour ce faire, dans la boîte de dialogue de configuration Exécuter / Déboguer, vous devez sélectionner l'option Stocker en tant que fichier de projet , et en cliquant sur l'engrenage, vous pouvez sélectionner le chemin d'accès souhaité dans le projet.
Contrôle de version
Nouveau commit
La fenêtre de validation est disponible en mode non modal et s'affiche à gauche. Ainsi, il ne bloque pas le travail sur d'autres fichiers lors de la préparation du commit, et plus d'informations sur les modifications sont affichées à l'écran.Le nouveau Commit est activé par défaut pour les nouveaux utilisateurs et désactivé pour ceux qui ont déjà installé PhpStorm.Activé par l'option Utiliser une interface de validation non modale dans Préférences / Paramètres | Contrôle de version | Commit .
Améliorations de la branche Git
Dans le coin inférieur droit de la fenêtre IDE, la branche Git actuelle est indiquée. Si vous cliquez dessus, le VCS | Git | Une branche .Ici, nous avons ajouté un champ de recherche. Le bouton Actualiser met à jour la liste des branches distantes. Et pour chaque commit, un indicateur est ajouté: entrant (bleu) ou sortant (vert).
Rebase interactive repensée
Git Rebase vous permet de réécrire l'historique des validations. Vous pouvez maintenant vous débarrasser rapidement des validations "temporaires", corriger le message ou l'ordre des validations. Bien sûr, tout cela peut être fait manuellement depuis la console, mais PhpStorm vous permet de voir immédiatement ce qui a été changé dans un commit particulier.Pour commencer, dans l'historique des validations, vous devez sélectionner la validation de base souhaitée et sélectionner Rebaser de manière interactive à partir d'ici dans le menu contextuel .
Outils DB
PhpStorm comprend presque toutes les fonctionnalités de DataGrip prêtes à l' emploi , vous pouvez donc voir l' examen de la version DataGrip 2020.1 de nos collègues.la toile
Et, comme toujours, toutes les mises à jour de WebStorm 2020.1 sont également incluses dans PhpStorm.Une liste complète des modifications peut être trouvée dans les très grandes notes de version .Vous pouvez également regarder l'aperçu de la version sur la page " Quoi de neuf " et si vous n'avez que quelques minutes, alors voici une courte vidéo (en anglais) avec une démonstration des principales fonctionnalités de la version:Et c'est tout ce temps. Merci d'avoir lu jusqu'au bout! Nous serons heureux de répondre à vos questions, souhaits, rapports de bogues et à vos réflexions dans les commentaires.Prenez soin de vous!Votre équipe JetBrains PhpStorm