Releases

PhpStorm 2019.3 : prise en charge complète de PHP 7.4, PSR-12, WSL, MongoDB, et plus encore

PhpStorm 2019.3 est disponible !

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 !


Télécharger PhpStorm 2019.3

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 :

PHP74_typed_properties_inspection

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-enter Alt+Entrée sur une propriété sans type, puis de choisir Add declared type for the field et voilà, c’est fait.

php74_typed_properties_quickfix

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

arrow-functions

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 :

arrow-functions-scope

Appuyez sur alt-enter Alt+Entrée sur la fonction anonyme et choisissez l’option Convert closure to arrow function :

arrow_functions_quick-fix

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-enter 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.

php74_numeric_literals_quickfix_blog

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.

php74_nested ternaries

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 :

php74_serialization

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.

php74_covariant_contrvariant

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.

php74_deprecations
curly_brackets

⚠️ 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:

psr-12-set-from

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 :

psr-12-inspections

Vous pouvez ensuite remettre le code en forme dans l’éditeur en utilisant Cmd/Ctrl+Alt+L :

PSR-12_reformat

Ou vous pouvez demander à PhpStorm de l’exécuter automatiquement à l’étape de nettoyage avant un commit :

psr-12-before-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

wsl_add_interpreter

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.

phpdoc-improvements

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:

php_injectable

Chaînes Heredoc/Nowdoc avec marqueur PHP :

injectable_php_nowdoc

Et dans les appels eval() également :

Injectable_php-eval

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-enter Alt+Entrée :

if-assignment-extract

Si vous avez des conditions if imbriquées, il est maintenant possible de les fusionner rapidement en une seule à l’aide de alt-enter Alt+Entrée :

if-merge-conditions

Vous pouvez fusionner else suivi de if dans un elseif unique :

else-if-merge

Ou faire l’inverse et diviser elseif en else et if :

elseif-split

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.

inline_const_refactoring

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 :

unwrap_function

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 <? :

php-no-short-tag

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 => :

array-quick-typing

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.

run-config_specify_interpreter

Polices et couleurs pour la variable $this

this-color-and-fonts

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 :

http-client_toolbar

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.

http-client_run_all

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 :

http-client_folding_requests

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 :

http-client-host-completion

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}}

http-client-dynamic-variables

Découvrez tous les points essentiels à connaître dans la présentation vidéo du
video 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.

vcs_new_get_from_ui

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.

vcs_push_to_any_branch

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.

vcs-date-formats

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.

find-in-selection

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 :

sort-lines

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.

mongodb_observer

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.

mongodb_tree_view

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.

mongodb-run-query

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

image description

Discover more