PhpStorm 2019.3 : prise en charge complète de PHP 7.4, PSR-12, WSL, MongoDB, et plus encore
PhpStorm 2019.3 est disponible !
Cette version est axée sur les performances et la qualité, pour vous fournir un EDI encore plus stable et rapide. Elle offre également une prise en charge complète de PHP 7.4, le style de code PSR-12, WSL pour les interpréteurs distants, la prise en charge de MongoDB, des mises à jour du client HTTP et de nombreuses améliorations de l’expérience utilisateur !
Dans cet article, nous présentons en détail les évolutions apportées par cette nouvelle version. Il s’agit d’une combinaison de l’ensemble des articles du blog EAP que nous avons publiés ici au cours des derniers mois, mais également de nombreux autres ajouts utiles qui n’ont pas encore été couverts. Accrochez vos ceintures car nous avons une tonne de GIF pour vous !
Performances et qualité
Les performances et à la qualité sont pour nous des objectifs essentiels lorsqu’une nous travaillons sur une nouvelle version. Mais cette fois, nous sommes allés encore plus loin en organisant un véritable marathon de la qualité. Toute l’équipe de la plateforme IntelliJ s’est concentrée sur le perfectionnement de l’EDI et l’amélioration de ses performances. Et voici les résultats que nous avons obtenus :
- Démarrage plus rapide de l’EDI
- Meilleure réactivité de l’interface utilisateur
- Réduction de la consommation de mémoire
Selon votre plateforme, vous devriez constater un chargement beaucoup plus rapide de l’EDI. En effet, nous avons mis en parallèle une partie des processus qui s’exécutaient auparavant de façon séquentielle, nous avons réorganisé les classes afin que le chargement de la classe initiale soit plus rapide, et bien plus.
Nous sommes parvenus à résoudre des problèmes de blocage de l’interface utilisateur provenant de plus de 1 600 rapports.
Le sous-système Version Control bénéficie également d’optimisations des performances. Nous avons repensé le traitement des événements et la gestion des fichiers ignorés. Il y a moins de blocages et la mise à jour du statut se fait plus rapidement dans les grands projets.
Nous allons continuer sur cette lancée afin d’accélérer encore le démarrage et d’apporter davantage d’optimisations dans les prochaines versions.
PHP 7.4
PHP 7.4 est maintenant disponible ! Le langage propose de nombreuses nouveautés intéressantes. Vous pouvez consultez les nouvelles fonctionnalités ici. Elles sont toutes prises en charge dans PhpStorm 2019.3.
Propriétés typées
C’est probablement la fonctionnalité la plus attendue de PHP 7.4. PhpStorm la prend en charge depuis sa version 2019.2. Mais dans cette version, nous avons corrigé plusieurs problèmes et couvrons quelques cas particuliers.
Pour commencer, PhpStorm met en évidence les violations de type :
Vous souhaitez sans doute ajouter rapidement les déclarations de type pour vos propriétés. PhpStorm peut détecter le type des propriétés existantes en fonction du PHPDoc, de la valeur par défaut, ou si vous aviez un type défini lorsque vous avez injecté la valeur dans le constructeur.
Quoi qu’il en soit, il vous suffit d’utiliser Alt+Entrée sur une propriété sans type, puis de choisir Add declared type for the field et voilà, c’est fait.
Fonctions fléchées
Si vous avez une fonction anonyme avec une seule instruction dans le corps, en PHP 7.4, vous pouvez maintenant la convertir en une fonction fléchée courte : fn(parameter_list) => expr
Et il n’est pas nécessaire d’écrire la section use
car elle comporte une liaison automatique par valeur des variables de portée externe :
Appuyez sur Alt+Entrée sur la fonction anonyme et choisissez l’option Convert closure to arrow function :
Séparateur de littéraux numériques
Vous pouvez maintenant ajouter des tirets bas n’importe où dans les nombres pour les mettre en forme visuellement. Appuyez sur Alt+Entrée sur un nombre et appliquez Add number separators. Cette opération permet d’ajouter un tiret bas ‘_
‘ tous les 3 chiffres pour les nombres décimaux ou tous les quatre chiffres pour les systèmes hexadécimaux, binaires et octaux.
Opérateur ternaire imbriqué
Presque tous les langages de programmation calculent l’opérateur ternaire de droite à gauche. PHP le faisait différemment, ce qui était contre-intuitif et pouvait induire en erreur. Mais PHP 7.4 rend l’associativité gauche obsolète. Il est donc recommandé d’éviter d’utiliser des ternaires imbriqués, ou si cela n’est pas possible, d’utiliser des parenthèses pour déclarer explicitement l’ordre de calcul.
PhpStorm 2019.3 met en évidence les expressions obsolètes et vous pouvez utiliser un correctif rapide (Alt+Entrée – vous connaissez, non ?) pour clarifier le comportement.
Nouveau mécanisme de sérialisation
Comme il n’était pas possible de résoudre les problèmes liés à la sérialisation existante, l’équipe PHP a décidé d’introduire deux nouvelles méthodes magiques, __serialize()
et __unserialize().
PhpStorm vous aidera à trouver les utilisations de ces méthodes dans le code :
Retours de covariant et paramètres de contravariant
PHP 7.4 corrige de nombreuses incohérences. L’une d’entre elles concerne le système de types. Lorsque vous travaillez avec une méthode héritée d’une classe parente, il est maintenant possible de définir un type de retour plus précis et des types de paramètres moins spécifiques pour ce type de retour.
Fonctionnalités obsolètes
Ce qui est appréciable dans les nouvelles versions de PHP, c’est que non seulement elles apportent de nouvelles fonctionnalités, mais elles rendent aussi d’anciennes fonctionnalités obsolètes. Le langage est ainsi plus propre et plus agréable à utiliser. La version 7.4 de PHP s’accompagne de nombreuses obsolescences.
PhpStorm 2019.3 met en évidence les points du code qui requièrent votre attention. Dans tous les cas où c’est possible, vous aurez la possibilité de corriger rapidement le comportement obsolète automatiquement.
⚠️ La sortie de PHP 7.4 entraîne l’abandon programmé des anciennes versions de PHP. PHP 7.2 passe en phase “correctifs de sécurité uniquement” pour un an. Le support de PHP 7.1 est officiellement terminé. Cela signifie que si une vulnérabilité est trouvée maintenant, elle n’aura jamais de correctif, et donc que le piratage n’est qu’une question de temps. Préparez-vous pour la mise à niveau.
PSR-12
Cette nouvelle norme PSR-12 remplace cette chère vieille PSR-2, en l’adaptant à toutes les nouvelles fonctionnalités du langage apportées ces dernières années et en supprimant quelques incohérences. Un grand bravo à PHP-FIG pour cette excellente mise à jour ! Si vous utilisez PSR-2, consultez les changements de PSR-12.
PhpStorm 2019.3 propose un style de code PSR-12 prédéfini, et l’EDI vous suggère de l’utiliser. Vous pouvez toujours en changer manuellement grâce à l’action Set from… dans Preferences | Editor | Code Style | PHP:
Certaines règles de la PSR-12 sont ajoutées en tant qu’inspections. Elles sont désactivées par défaut, mais PhpStorm suggère d’activer l’inspection si vous choisissez le style de code PSR-12. Vous pouvez ajuster les inspections comme bon vous semble dans Preferences | Editor | Inspections puis PHP | Code Style | PSR-12 :
Vous pouvez ensuite remettre le code en forme dans l’éditeur en utilisant Cmd/Ctrl+Alt+L :
Ou vous pouvez demander à PhpStorm de l’exécuter automatiquement à l’étape de nettoyage avant un commit :
WSL
PhpStorm prend désormais en charge le développement dans un environnement WSL (sous-système Windows pour Linux), c’est-à-dire si vous lancez l’EDI sur une machine Windows 10 mais que vous développez pour WSL/Linux. Vous pouvez indiquer un interpréteur PHP distant dans WSL et l’utiliser pour exécuter des scripts, des tests et des commandes Composer et déboguer.
- Pour commencer, assurez-vous d’avoir installé WSL sur votre machine Windows 10 et la distribution Linux de votre choix. Reportez-vous au guide d’installation.
- Selon votre distribution, PHP peut être déjà préinstallé. Si ce n’est pas le cas, vous devrez l’installer manuellement à l’aide de la ligne de commandes. Par exemple, dans Ubuntu, vous pouvez exécuter quelque chose comme :
sudo apt update
sudo apt install php php-mbstring php-dom php-xml php-zip php-curl php-xdebug - Une fois PHP installé dans votre environnement WSL, vous êtes prêt à configurer PhpStorm.
- Ajoutez un interpréteur CLI dans File | Settings | Languages & Frameworks | PHP
Et c’est terminé. Vous pouvez maintenant utiliser cet interpréteur pour exécuter des tests, Composer ou pour toute autre configuration d’exécution.
Améliorations de PHPDoc
PhpStorm proposait une résolution pour les noms totalement qualifiés et les liens dans PHPDoc mais le bloc entier était affiché dans une seule couleur et dans le style des commentaires normaux.
Dans PhpStorm 2019.3, les blocs doc bénéficient d’une mise en évidence de tous les types, variables, paramètres, méthodes et propriétés. Si vous avez du code HTML dans vos commentaires, il sera également mis en évidence en tant que tel.
Mise en évidence du code PHP dans Markdown et les chaînes de caractères
Parfois, vous pouvez avoir besoin d’utiliser du PHP dans un littéral de chaîne. Nous espérons que ce ne sera pas dans eval()
, mais vous voyez où nous voulons en venir. Ou peut-être que vous souhaitez obtenir la mise en évidence du code PHP dans des blocs de code de fichiers Markdown.
Dans PhpStorm 2019.3, tout cela est possible grâce à un dialecte PHP spécial appelé InjectablePHP. Ce dialecte fonctionne de manière similaire à PHP mais la balise d’ouverture peut être omise.
Elle sera automatiquement injectée dans les délimitations Markdown avec la chaîne d’informations égale à php
:
Chaînes Heredoc/Nowdoc avec marqueur PHP
:
Et dans les appels eval()
également :
Petites améliorations pratiques
Correctifs rapides pour les conditions
La déclaration conditionnelle if-else
est probablement la construction la plus utilisée du langage. Donc, dans PhpStorm 2019.3, nous avons ajouté plusieurs action pour rendre la manipulation des conditions plus agréable et rapide.
Si vous avez une affectation dans une déclaration if
, PhpStorm suggèrera de l’extraire vers une variable avec Alt+Entrée :
Si vous avez des conditions if
imbriquées, il est maintenant possible de les fusionner rapidement en une seule à l’aide de Alt+Entrée :
Vous pouvez fusionner else
suivi de if
dans un elseif
unique :
Ou faire l’inverse et diviser elseif
en else
et if
:
Refactorisation Inline de constantes
Cette refactorisation fait l’inverse de Extract constant ; elle entraîne le remplacement des occurrences de constantes par une valeur. Appuyez sur Cmd/Ctrl+Alt+N sur la constante.
Découvrez de nombreuses autres refactorisations en appuyant sur Cmd/Ctrl+T.
Désencapsuler l’argument de la fonction (supprimer l’appel de la fonction)
Appuyez sur Maj+Cmd/Ctrl+Suppr pour supprimer l’appel de fonction redondant :
Insertion automatique de <?php lorsque vous saisissez <?
Les balises courtes sont susceptibles de persister dans PHP, au moins pour les prochaines années, car le dernier vote RFC n’est pas passé. Mais PhpStorm peut vous aider à anticiper l’obsolescence des balises courtes, en insérant automatiquement <?php
dès que vous tapez <?
:
Transformation automatique de ‘=’ en ‘=>’ après une clé de tableau array
Nous vous faisons cadeau d’un autre petit gain de temps dans cette version 2019.3. Lorsque vous ajoutez un élément à un tableau et que vous saisissez une clé, puis que vous souhaitez saisir =>
pour indiquer une valeur, appuyez simplement sur =
et PhpStorm insérera automatiquement =>
:
Autres mises à jour en relation avec PHP
Spécifier l’interpréteur pour les configurations d’exécution de tests PHP
Auparavant, si vous vouliez exécuter des tests dans PhpStorm avec un interpréteur PHP distant, vous deviez créer une configuration d’exécution distincte. Dans PhpStorm 2019.3, nous avons ajouté une option d’interpréteur pour toutes les configurations d’exécution php. Vous pouvez donc choisir n’importe quel interpréteur pour exécuter vos tests. Vous êtes libre d’utiliser Docker, Vagrant, ou tout autre interpréteur distant.
Polices et couleurs pour la variable $this
Client HTTP
Barre d’outils de l’éditeur
Dès que vous ouvrez un fichier .http
ou .rest
, vous obtenez une barre d’outils qui vous permet d’accéder rapidement aux actions courantes :
Exécuter toutes les requêtes d’un fichier
Avec le client HTTP basé sur l’éditeur dans PhpStorm, vous pouvez écrire plusieurs requêtes dans un même fichier .http
en les séparant par ###
. C’est assez pratique si vous avez besoin de formuler des chaînes de requêtes dans lesquelles une requête dépend du résultat des précédentes.
Précédemment, vous deviez exécuter chaque requête une par une. Dans PhpStorm 2019.3, vous pouvez toutes les exécuter en même temps.
Folding requests
Si vous envoyez une requête avec un corps assez long, par exemple des données de formulaire en plusieurs parties ou plusieurs en-têtes, vous pouvez souhaiter la réduire pour éviter les distractions dans l’éditeur.
Vous pouvez réduire l’ensemble de la requête en ne gardant que la première ligne, ou uniquement le corps :
Complétion pour les hôtes
Lors de la composition d’une nouvelle requête, vous n’avez plus besoin de taper le nom d’hôte que vous avez utilisé précédemment. PhpStorm vous proposera une liste de noms d’hôtes dans la liste des suggestions :
Variables dynamiques
Nous avons ajouté trois variables dynamiques que vous pouvez utiliser où vous le souhaitez dans les requêtes :
$uuid
– Génère un nouveau UUID-v4 (e9e87c05-82eb-4522-bc47-f0fcfdde4cab)$timestamp
– Horodatage Unix actuel (1563362218)$randomInt
– Un entier aléatoire entre 0 et 1 000
Utilisez des accolades doubles pour insérer l’une de ces variables là où vous le souhaitez :
GET http://httpbin.org/anything?id={{$uuid}}&ts={{$timestamp}}
Découvrez tous les points essentiels à connaître dans la présentation vidéo du
Client HTTP dans PhpStorm.
Contrôle de version
Interface utilisateur repensée pour le clonage des projets
Vous pouvez maintenant vous connecter à GitHub depuis cette boîte de dialogue ou, si vous êtes déjà connecté, l’EDI vous donnera instantanément un aperçu des listes de tous les référentiels regroupés par comptes ou par organisations.
Checkout
Nous avons supprimé l’action Checkout as pour la remplacer par 2 nouvelles actions distinctes : New Branch from Selected et Checkout. La nouvelle action New Branch from Selected crée un nouvelle branche et ne définit pas de suivi. L’action Checkout crée une nouvelle branche locale, l’extrait, et définit le suivi de la branche distante sélectionnée en l’absence de branche locale du même nom.
Push de n’importe quelle branche
Vous pouvez maintenant faire un push des modifications de n’importe quelle branche sans avoir à basculer sur cette branche d’abord. Dans la fenêtre contextuelle VCS | Branches, sélectionnez une branche, puis utilisez l’action Push du menu.
Personnalisation du format de date
Vous pouvez configurer le format de date pour les actions VCS Annotate et VCS Log. Vous pouvez par exemple le définir sur mm/dd/yyyy
pour utiliser le format américain.
EDI
Amélioration de la gestion des plugins
PhpStorm propose de nombreux plugins que vous pouvez installer pour étendre ses fonctionnalités et personnaliser son apparence. La gestion des plugins était un peu pénible car elle obligeait à redémarrer l’EDI à chaque fois. Nous avons résolu ce problème dans PhpStorm 2019.3 en implémentant une prise en charge de l’infrastructure sous-jacente pour l’installation dynamique des plugins. L’EDI peut ainsi charger et décharger les plugins sans redémarrer. Cette fonction est actuellement activée pour les plugins de thèmes et de configurations claviers. Nous prévoyons de l’étendre à la plupart de nos plugins dans les prochaines versions.
Barres de défilement contrastées
Vous pouvez choisir de rendre la barre de défilement plus visible en cochant la case “Use contrast scrollbars” dans Preferences/Settings | Appearance & Behavior | Appearance.
Défilement fluide de la souris
Si l’option Smooth scrolling est activée dans Preferences | Appearance & Behavior | Appearance, toute l’interface défile de façon fluide plutôt que ligne par ligne lorsque vous utilisez la molette d’une souris ou un touchpad.
Recherche dans le texte sélectionné
Sélectionnez le morceau de code dont vous avez besoin dans l’éditeur et appelez l’action Find en appuyant sur Cmd/Ctrl+F pour que l’EDI concentre sa recherche sur la zone sélectionnée. Si vous devez étendre la zone de recherche au reste du fichier, appuyez à nouveau sur Cmd/Ctrl+F, ou bien activez l’option In selection dans la barre d’outils.
Nouvelle commande de l’éditeur pour trier les lignes par ordre alphabétique
Vous pouvez désormais trier facilement les lignes par ordre alphabétique en les sélectionnant dans l’éditeur, puis en choisissant Edit | Sort Lines dans le menu principal ou en exécutant cette action à partir de Find Actions à l’aide du raccourci Cmd/Ctrl+Maj+A :
Technologies Web
Vous trouverez l’intégralité des modifications apportées par nos collègues de l’équipe WebStorm sur la page What’s new in WebStorm 2019.3. Tout ce qui y est mentionné a également été incorporé dans PhpStorm 2019.3.
Outils de base de données
Prise en charge de MongoDB
Nous avons finalement commencé à travailler sur la prise en charge de MongoDB.
Voici ce qui fonctionne dans cette version :
Introspection
Vous pouvez observer les collections et les champs dans l’explorateur de bases de données. Nous allons chercher les 10 premiers documents de chaque collection pour obtenir des informations sur les champs. Le paramètre JDBC fetch_documents_for_metainfo disponible dans l’onglet Advanced de la boîte de dialogue des propriétés de la source de données permet de personnaliser cette opération.
Data viewer
Ouvrez n’importe quelle collection ou observez le résultat de la requête : vous avez la possibilité de trier par colonnes ou de filtrer les valeurs. La pagination fonctionne également.
Il est également possible d’explorer les données sous forme d’arborescence. Pour activer cette option, cliquez sur Gear icon | View as… | Tree.
Query console
Il n’existe actuellement aucune assistance au codage, mais cela ne vous empêche pas d’exécuter des requêtes et d’en récupérer les résultats. Pour exécuter une instruction, placez le caret dessus et appuyez sur Cmd/Ctrl+Entrée ou utilisez le bouton Play de la barre d’outils.
La saisie automatique pour les requêtes viendra plus tard.
PhpStorm inclut toutes les fonctionnalités de DataGrip, prêtes à l’emploi, ce qui signifie qu’il y a beaucoup d’autres choses à découvrir dans les outils de base de données. Restez à l’écoute pour une présentation détaillée de DataGrip 2019.3.
Une liste complète des modifications de cette version figure dans les notes de publication qui sont particulièrement détaillées.
C’est tout pour aujourd’hui. Merci de nous avoir lus jusqu’au bout ! Envoyez-nous vos questions, suggestions, rapports de bugs et commentaires.
L’équipe JetBrains PhpStorm
The Drive to Develop
Auteur de l’article original en anglais : Roman Pronskiy