PhpStorm 2020.3: PHP 8, Attributs, PHPStan et Psalm, Xdebug 3, CSS Tailwind et co-développement





Nous sommes heureux de vous présenter la dernière version majeure de PhpStorm cette année! Sous la coupe se trouve une analyse détaillée de tous les changements et nouvelles fonctionnalités.







PHP 8



Sortie de PHP 8.0 . Un grand merci à tous les contributeurs et responsables de publication!



PhpStorm 2020.3 prend en charge tous les derniers changements de langue. Jetons un coup d'œil à ce qui est disponible et comment l'utiliser dans l'EDI.



Version de la langue dans la barre d'état



Désormais, la barre d'état affiche toujours la version PHP actuelle du projet. Vous pouvez également changer de version à partir de là.







Si le bouton radio n'est pas actif, cela signifie que la limite de version de PHP est définie dans composer.json.



Arguments nommés



En PHP 8, les arguments des fonctions et des méthodes peuvent être passés en spécifiant un nom de paramètre. Les appels sont désormais automatiquement documentés et les paramètres optionnels sont optionnels au sens plein du terme.



À l'aide du correctif rapide Ajouter des identificateurs de nom , vous pouvez ajouter des noms aux arguments: les







fautes de frappe ou les noms d'arguments erronés sont mis en surbrillance:







si la valeur transmise correspond à la valeur du paramètre par défaut, vous pouvez la supprimer en toute sécurité: au







lieu du tableau d'options, vous pouvez utiliser des ne passant que les nécessaires. Les arguments passés de cette manière sont de type sûr, contrairement aux éléments de tableau.







Les attributs



Les attributs sont une nouvelle façon structurée de spécifier des métadonnées en PHP au lieu des commentaires PHPDoc.



Pour créer un attribut, vous devez déclarer une classe et ajouter un marqueur #[Attribute]



. Ici, PhpStorm vous aidera à mettre en évidence, à compléter le code, à rechercher des usages, à refactoriser et plus encore.







PHP lui-même ne vérifie la validité des attributs que lorsqu'il est appelé ReflectionAttribute::newInstance()



. Et si vous n'accédez pas aux attributs via Reflection, ils sont complètement ignorés afin de ne pas charger des classes inutiles et de créer des objets.



Mais PhpStorm validera tout dans l'éditeur sans exécuter l'API Reflection. Les règles suivantes sont vérifiées:



  • La classe spécifiée peut en effet être un attribut.





  • Cet attribut s'applique uniquement aux endroits autorisés: une classe, une propriété, une méthode, un paramètre, une fonction ou une constante de classe.





  • L'attribut est répété uniquement s'il est déclaré avec un indicateur Attribute::IS_REPEATABLE



    .







Voici les attributs en action avec Symfony:










Attributs PHP 8 Storm



Plusieurs attributs sont disponibles dans PhpStorm 2020.3 prêts à l'emploi dans l'espace de noms \JetBrains\PhpStorm\



.



Vous pouvez les utiliser immédiatement dans votre base de code sans rien connecter.



Mais si vous utilisez en plus d'autres outils d'analyse statique et que vous ne souhaitez pas recevoir d'erreurs de classe non trouvée , il peut être utile d'ajouter le package d' attributs JetBrains / phpstorm-attributes en tant que dépendance à composer.json



.





# [Obsolète]



Utilisez cet attribut comme une balise PHPDoc @deprecated pour marquer les méthodes, les classes ou les constantes de classe qui seront supprimées à l'avenir.



L'avantage ici est que vous pouvez spécifier un remplacement pour le code obsolète et il sera plus facile pour l'utilisateur de mettre à jour.



Jetons un coup d'œil à un exemple du monde réel. Dans le Symfony 5.2 récemment publié , la méthode est \Symfony\Component\DependencyInjection\Alias::setPrivate()



obsolète . Si vous y ajoutez un attribut #[Deprecated]



, vous pouvez simplifier la migration.



#[Deprecated(
   reason: 'since Symfony 5.2, use setPublic() instead',
   replacement: '%class%->setPublic(!%parameter0%)'
)]

      
      













# [ArrayShape]



Cet attribut est utile pour travailler avec des structures de données simples ou des tableaux de type objet lorsque, pour une raison quelconque, une classe ne peut pas être déclarée.



La syntaxe est la suivante:

#[ArrayShape([
// ‘key’ => ’type’,
   ‘key1’ => ‘int’,
   ‘key2’ => ‘string’,
   ‘key3’ => ‘Foo’,
   ‘key3’ => App\PHP 8\Foo::class,
])]
function functionName(...): array

      
      







Le type peut être spécifié sous forme de chaîne ou de référence de classe sous la forme d'une chaîne ou d'une constante FQN ::class



.







Le tableau qui définit la "forme" peut être placé dans une constante et réutilisé:



const  MY_ARRAY_SHAPE = [];
#[ArrayShape(MY_ARRAY_SHAPE)]

      
      











Dans PhpStorm, nous avons déjà annoté #[ArrayShape]



certaines fonctions PHP standard avec un attribut , par exemple parse_url()



.



Heureusement, la syntaxe des attributs sur une seule ligne est rétrocompatible. Autrement dit, si vous écrivez #[ArrayShape]



sur une seule ligne dans un projet PHP 7, l'interpréteur PHP interprétera cette ligne comme un commentaire.



Contrairement à l'interpréteur PHP, PhpStorm analysera les attributs de toute façon! Ainsi, même si votre projet exécute PHP 7.4 ou une version inférieure, vous bénéficierez toujours de l'ajout #[ArrayShape]



.





# [Immuable]



Les objets immuables ne peuvent pas être modifiés après l'initialisation ou la création. Leur utilisation rend l'état du programme plus prévisible et plus facile à déboguer.



Un attribut #[Immutable]



peut être utilisé pour marquer une classe entière ou des propriétés spécifiques pour indiquer qu'elles ne peuvent pas être modifiées.



PhpStorm vérifiera l'utilisation de ces objets et propriétés et mettra en évidence les tentatives de changement.







La modification d'une propriété par défaut est autorisée dans le constructeur, mais peut également être autorisée dans les méthodes privées / protégées. Cela se fait à l' aide des constantes CONSTRUCTOR_WRITE_SCOPE



, PRIVATE_WRITE_SCOPE



, PROTECTED_WRITE_SCOPE



transmis au constructeur #[Immutable]



.









# [Pure]



Cet attribut marque les fonctions pures, c'est-à-dire celles qui ne produisent aucun effet secondaire. Ces fonctions peuvent être supprimées en toute sécurité si le résultat de leur exécution n'est pas utilisé ultérieurement.







Si une fonction est marquée comme propre, mais qu'il y a une tentative de changer quelque chose en dehors de la portée externe dans son corps, alors PhpStorm mettra en évidence le code non sécurisé.







Toutes les fonctions PHP pures standard sont déjà marquées avec cet attribut dans PhpStorm.





# [ExpectedValues]



À l'aide de cet attribut, vous pouvez spécifier les valeurs que la fonction prend comme paramètres et celles qui peuvent être renvoyées.



C'est pratiquement la même chose que expectedArguments()



dans .phpstorm.meta.php



. La seule différence est que la version méta est plutôt auxiliaire et que l'attribut indique de manière rigide qu'il n'y a pas d'autres valeurs possibles.



Par exemple, considérons la fonction de comptage:

count ( array|Countable $array_or_countable [, int $mode = COUNT_NORMAL ] ) : int
      
      





Son deuxième argument est un entier, mais en fait ce n'est pas un entier arbitraire, mais l'une des constantes COUNT_NORMAL



ou COUNT_RECURSIVE



.



Voici comment l'attribut #[ExpectedValues]



améliorera la situation:







c'est-à-dire que l'auto-complétion est apparue et si quelque chose d'autre est passé, l'erreur est mise en évidence.



Comment spécifier des valeurs possibles ou des masques binaires
Les valeurs attendues sont transmises au constructeur de l'attribut et peuvent être l'une des suivantes:

  • Nombres: #[ExpectedValues(values: [1,2,3])]





  • Littéraux de chaîne: #[ExpectedValues(values: [‘red’, ‘black’, ‘green’])]





  • Constantes: #[ExpectedValues(values: [COUNT_NORMAL, COUNT_RECURSIVE])]





  • Constantes de classe: #[ExpectedValues(values: [Code::OK, Code::ERROR])]









Et il existe plusieurs façons de spécifier les arguments attendus:

  • #[ExpectedValues(values: [1,2,3])]



    , .

  • #[ExpectedValues(flags: [1, 2, 3])]



    , , 1 | 3



    .

  • #[ExpectedValues(valuesFromClass: MyClass::class)]



    , `MyClass



    `.

  • #[ExpectedValues(flagsFromClass: ExpectedValues::class)]



    , `MyClass`.







Un autre exemple # [ExpectedValues]



Prenons une aide response()



de Laravel. Il prend le code d'état HTTP comme deuxième paramètre.



Il y a deux problèmes

  • Pas de saisie semi-automatique avec les codes possibles

  • Pas de validation de valeur dans l'éditeur









Corrigeons cela en ajoutant l'attribut #[ExpectedValues(valuesFromClass: Response::class)]













# [Non-retour]



Certaines fonctions peuvent arrêter l'exécution du script. Le marquage des fonctions telles que les points de sortie avec un attribut #[NoReturn]



améliore l'analyse du flux de contrôle.









# [Langue]



Cet attribut peut être ajouté aux paramètres de chaîne qui attendent du texte dans certaines langues, telles que RegExp, SQL, DQL, etc.



Pour les arguments, la mise en évidence et les options supplémentaires apparaîtront.












Revenons aux nouvelles fonctionnalités de PHP 8.



Déclaration des propriétés dans le constructeur



Les propriétés normales peuvent être converties en propriétés promues ou vice versa à l'aide du correctif rapide Convertir en propriété promue .







PhpStorm garantit que les propriétés ne sont utilisées que d'une manière autorisée dans PHP 8:

  • Vous ne pouvez déclarer des propriétés que dans le constructeur.

  • Ne peut pas être déclaré dans un constructeur abstrait.

  • Vous ne pouvez pas déclarer une propriété variadique de cette manière.

  • La propriété ne peut pas être de type «Callable».

  • Les remplacements de propriété ne sont pas autorisés.











Si la propriété est déclarée d'une nouvelle manière, mais que l'initialisation reste dans le corps du constructeur, PhpStorm proposera de la supprimer.







Expression de correspondance



La nouvelle expression est similaire à switch



mais utilise une comparaison stricte et peut être affectée à une variable ou renvoyée.



PhpStorm détecte si un bloc peut switch



être réécrit match



et le fera automatiquement avec une solution rapide en appuyant sur Alt + Entrée:







Il peut être difficile de voir l'utilisation incorrecte d'une nouvelle expression, donc PhpStorm mettra en évidence toutes les erreurs.









Des valeurs dupliquées seront trouvées dans les conditions: Une







expression de correspondance avec une branche et une branche par défaut peut être remplacée en toute sécurité par une expression ternaire.







Et s'il ne reste que la branche par défaut, la correspondance n'est pas du tout nécessaire.







Enfin, si les corps sont identiques dans différentes branches, ils peuvent être fusionnés.







Opérateur Nullsafe



Au lieu d'un tas de conditions avec une vérification de null, vous pouvez maintenant utiliser une chaîne d'appels avec un nouvel opérateur ?->



.



PhpStorm vérifiera l'utilisation correcte de l'opérateur:







Virgule suspendue



Il est désormais permis d'ajouter une virgule après le dernier argument lors de l'appel de fonctions et dans une liste de fermeture use



.







Captures sans capture



En PHP 8, vous pouvez intercepter une exception dans un bloc catch sans variable.







Lancer l'expression



Des exceptions peuvent désormais être lancées dans les fonctions fléchées et les opérateurs courts ??



, ainsi que dans ternaire ? :



.







Vous pouvez utiliser la sténographie thr



et appuyez sur l'onglet - il s'agit d'un modèle en direct .







Constante :: classe sur les objets



Auparavant, pour obtenir le FQN d'un objet, vous deviez utiliser une fonction get_class()



. En PHP 8, l'appel get_class($object)



peut être remplacé en toute sécurité par $object::class



.



En fait, en appuyant sur Alt + Entrée, un tel remplacement peut être effectué. Une utilisation incorrecte de la constante ::class



PhpStorm sera mise en évidence.







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



Comment vérifier si une chaîne contient un mot spécifique? Est la question PHP la plus vue sur Stack Overflow. PHP 8 a une réponse claire à cette question: utilisez une fonction str_contains()



.



PhpStorm 2020.3 tous les appels strpos()



qui peuvent être remplacés par str_contains()



:







Il existe également de nouveaux str_starts_with()



, et str_ends_with()



pour déterminer si la sous-chaîne spécifique de la ligne de début ou de fin. PhpStorm met en évidence les endroits où les appels substr()



peuvent être remplacés par de nouvelles alternatives:







Avertissements moteurs reclassifiés



En PHP 8, le type d'avertissement lancé a été révisé pour de nombreuses erreurs. À savoir, au lieu de l'avis dans de nombreux cas, il y aura une exception ou une erreur de type.



Dans PhpStorm, pour cette raison, certaines inspections ont deux niveaux de gravité différents: pour PHP 8 et pour les anciennes versions.







Ce sont tous les plus notables de PHP 8. Il y a tout un tas de petits changements qui seront visibles lorsque vous passez à PHP 8.





Prise en charge de Psalm et PHPStan



Les deux analyseurs statiques peuvent être utilisés dans PhpStorm 2020.3 pour mettre en évidence les problèmes directement dans l'éditeur.







Si PHPStan ou Psalm sont ajoutés en tant que dépendances dans composer.json



, il y aura une icône de clé à côté d'eux qui ouvre les paramètres de l'outil.







De là, vous pouvez accéder aux paramètres d'inspection et activer la mise en évidence dans l'éditeur. Cela se fait en sélectionnant l'inspection appropriée dans PHP | Outils de qualité dans Paramètres / Préférences | Rédacteur | Inspections .



️ Il est préférable d'allumer un seul des instruments plutôt que les deux à la fois.







Ici, vous pouvez également spécifier le chemin d'accès au fichier de configuration et configurer les arguments de la ligne de commande.



️ PHPStan peut fonctionner sans fichier de configuration, mais Psalm l'exige. S'il y en a psalm.xml



ou dans le répertoire racine phpstan.neon



, PhpStorm les extraira automatiquement.



Lorsque tout est configuré, ouvrez n'importe quel fichier et vous verrez un surlignage des analyseurs statiques. Il peut y avoir un court délai avant que le rétroéclairage n'apparaisse.







Annotations



Toutes les annotations de psaume sont @psalm-*



désormais correctement mises en évidence dans l'éditeur. Mais en général, vous pouvez maintenant supprimer en toute sécurité le préfixe @psalm-



des balises, c'est-à-dire @psalm-return



-> @return



et @psalm-param



-> @param



.







Support de type



Nous avons ajouté la prise en charge de certains types de psaume, et sur la base des informations des balises, nous avons amélioré notre inférence de type. Cela a rendu les contrôles, la génération de code et l'auto-complétion plus précis.



Pseudo-types

Prend en charge les pseudo-types de psaume, tels que scalaires, numériques, etc.







Constantes dans les types

Prend en charge les jointures constantes et la spécification via des *



balisesparam et var...







Indices de type pour les tableaux Les

descriptions de tableaux sont array<array-key, Type>



également prises en charge, y compris celles imbriquées.







Generics et @tempate Le

support générique est une fonctionnalité pour les utilisateurs avancés qui n'a pas une spécification correcte complète et de nombreux cas extrêmes . Cependant, nous avons décidé d'implémenter le support de base de @template



la syntaxe basée sur Psalm pour voir comment cela sera utilisé.



Jusqu'à présent, seul le cas le plus primitif est pris en charge, lorsque la fonction renvoie l'un de ses paramètres.







Ce support générique est très basique et expérimental. Nous voulons comprendre comment il sera utilisé et ce qui doit être mis en œuvre en premier. Nous serions ravis de vous entendre, en particulier sous la forme de cas d'utilisation réels dans notre tracker .


Xdebug 3



Le débogueur PHP populaire a été mis à jour pour le rendre beaucoup plus rapide et plus facile à configurer. En savoir plus sur Xdebug 3 dans le guide de mise à niveau .



Pour configurer Xdebug 3, une option xdebug.mode suffit maintenant (comme ceci XDEBUG_MODE=debug



).



Le port Xdebug par défaut a également été modifié: au lieu de 9000



maintenant 9003



. Pour simplifier la migration, PhpStorm écoute par défaut sur les deux ports. Les paramètres de port et d'autres options pour Xdebug se trouvent dans Préférences / Paramètres | Langues et cadres | PHP | Déboguer .









Améliorations du débogueur



Les capacités de débogage de PhpStorm ont été étendues avec deux nouvelles fonctionnalités.



Conseils interactifs

Désormais en mode débogage, vous pouvez étendre la sortie des variables pour voir tous les champs. Vous pouvez également modifier les valeurs ici.







Montres en ligne

Dans les versions précédentes, vous pouviez ajouter une variable ou une expression à la liste de surveillance et observer le changement de valeur étape par étape.



Dans PhpStorm 2020.3, vous pouvez ajouter des montres directement dans le contexte, et elles seront affichées à côté du code.



Cliquez sur Ajouter en tant que montre intégrée dans la fenêtre contextuelle de l'indice.





Ou cliquez sur Ajouter une montre en ligne dans le menu contextuel de l'éditeur.





Ou sélectionnez la variable et sélectionnez Ajouter une montre en ligne dans le menu contextuel .





Surligner et renommer des variables dans Twig



Sélectionnez une variable ou placez le curseur dessus et toutes ses utilisations dans le modèle seront mises en évidence. Et pour renommer toutes les occurrences, appuyez sur Maj + F6.









Co-développement - Code With Me



PhpStorm 2020.3 est livré avec le plugin Code With Me , le nouvel outil de développement collaboratif JetBrains et de programmation par paires. Avec lui, vous pouvez partager un projet ouvert avec d'autres utilisateurs et y travailler ensemble en temps réel. En savoir plus sur Code With Me dans ces articles .









Client HTTP



Intégration de Guzzle avec le client HTTP dans PhpStorm



Guzzle est l'un des clients HTTP les plus populaires pour PHP. Imaginez que quelque part dans le code il y a une requête HTTP et que vous voulez la tester sans exécuter le code lui-même. Auparavant, vous deviez copier tous les paramètres manuellement.



PhpStorm 2020.3 vous permet de convertir de simples requêtes Guzzle en fichiers .http. Si la demande est prise en charge, une icône apparaîtra à côté. En cliquant dessus, vous ouvrirez un nouveau fichier de travail avec l'URL correcte, les paramètres de requête, les méthodes, les en-têtes, le corps.







Désormais, à partir de l'éditeur, la requête peut être exécutée et manipulée, puis enregistrée sous forme de fichier http dans le projet.



En savoir plus sur le client HTTP dans la revue vidéo .


Copier la requête HTTP vers cURL



Pour exporter la requête HTTP vers une chaîne cURL, appuyez sur Alt + Entrée sur la requête dans l'éditeur et sélectionnez Convertir en cURL et copier dans le presse-papiers . Il peut maintenant être inséré dans le terminal, la documentation ou tout autre outil de test d'API.









Éditeur



Améliorations pour Markdown



Vous pouvez utiliser la syntaxe Mermaid.js dans les fichiers markdown pour décrire des graphiques et des graphiques . PhpStorm peut maintenant rendre des aperçus pour eux directement dans l'éditeur. Inclus dans Préférences / Paramètres | Langues et cadres | Markdown .







Il est également maintenant possible de reformater le contenu des fichiers .md selon les styles courants. Terminé en appuyant sur ⌘⌥L / Ctrl + Alt + L.



Configurable dans Préférences / Paramètres | Rédacteur | Style de code | Markdown .







Enfin, si vous cliquez sur le bouton Aperçu par défilement automatique dans le coin supérieur droit de l'éditeur, le défilement de l'aperçu et du texte sera synchronisé.



Amélioration de l'orthographe et de la vérification grammaticale



Les fautes de frappe et les problèmes de grammaire peuvent désormais être corrigés beaucoup plus rapidement:

  • Tout d'abord, une explication de l'erreur apparaîtra dans une fenêtre contextuelle.

  • Et si vous appuyez sur Alt + Entrée sur le texte en surbrillance, les options de remplacement seront proposées en haut, et non masquées dans un sous-élément, comme auparavant.









Diviser l'éditeur par glisser-déposer



Pour ouvrir plusieurs fichiers côte à côte, faites simplement glisser l'onglet vers le coin souhaité de l'écran.







Il existe une autre façon d'ouvrir un fichier en mode fractionné - Maj + Entrée.

La combinaison peut être cliquée sur le fichier sélectionné dans la vue Projet ou dans les résultats de la recherche de fichiers.







Onglet Aperçu



Si vous avez besoin d'afficher rapidement les fichiers, il n'est plus nécessaire d'ouvrir chacun d'eux dans un onglet séparé. Vous pouvez utiliser le nouvel onglet Aperçu .



Pour l'activer, cliquez sur l'engrenage dans la vue Projet et sélectionnez Activer l'onglet Aperçu et Ouvrir les fichiers en un seul clic .







Vous pouvez également afficher les fichiers en appuyant sur la barre d'espace dans la vue Projet sans les ouvrir.









IDE



Améliorations de la recherche partout





Les résultats sont regroupés par pertinence:





Vous pouvez effectuer des opérations mathématiques simples sans ouvrir la calculatrice Google :





Vous pouvez rechercher par historique Git:





Passage automatique au thème clair ou sombre



Dans Préférences / Paramètres | Apparence et comportement | Apparence | Thème sélectionnez Synchroniser avec le système d'exploitation .







Nouvel ensemble de raccourcis clavier pour macOS



Une autre disposition de raccourcis clavier pour macOS minimise l'utilisation des touches de fonction afin que vous n'ayez pas à étirer votre main sur tout le clavier lors de l'exécution d'actions de base. Par exemple, au lieu de Fn + Shift + F6, le refactoring Rename utilise ⌥ + ⌘ + R.







Mots au lieu d'icônes pour les raccourcis clavier macOS



Vous pouvez faire apparaître les mots Alt, Cmd, etc. au lieu d'icônes comme ⌘ . Activé



dans la section Registre par l'option ide.macos.disable.native.shortcut.symbols . Pour accéder au registre, utilisez Find Action Cmd + Shift + A et écrivez Registry.



Définir PhpStorm comme application par défaut pour différents fichiers



Les préférences | Paramètres / Editeur / Types de fichiers cliquez sur Associer les types de fichiers à PhpStorm… . Dans la boîte de dialogue, sélectionnez les extensions de fichier et elles s'ouvriront dans PhpStorm.



Un redémarrage est requis sur macOS.







Les modèles peuvent générer plusieurs fichiers



Vous pouvez générer simultanément plusieurs fichiers à la fois, par exemple, un squelette pour un module ou une vue de contrôleur combinée.



Dans Préférences / Paramètres | Rédacteur | Cliquez sur Modèles de fichier et de code pour créer un nouveau modèle, puis cliquez sur l'icône Créer un fichier de modèle enfant . Des variables de type



peuvent être utilisées dans le champ Nom de fichier . Et voici un exemple de la façon de générer un contrôleur et un modèle dans Symfony:${NAME}





















Prise en charge de la scène Git



Vous pouvez l'activer en cochant la case Activer la zone de préparation dans Préférences / Paramètres | Contrôle de version | Git .



Dans la fenêtre de l'outil Valider (Cmd + 0 / Alt + 0), deux groupes de fichiers apparaissent: mis en scène et non mis en scène.



Pour ajouter un fichier à mettre en scène , cliquez sur le + à côté.







Ou vous pouvez sélectionner des lignes spécifiques et les ajouter avec une icône dans l'éditeur. Dans ce cas, vous pouvez valider certaines des modifications du fichier et continuer à travailler sur le reste.









Outils DB



PhpStorm comprend DataGrip dispose de la boîte , qui sont couverts dans la liste de libération DataGrip 2020,3 de nos collègues.



SQL pour MongoDB



Vous pouvez maintenant utiliser des requêtes SQL sur MongoDB. PHPStorm 2020.3 supports SELECT-



requêtes JOIN



, WHERE



, GROUP BY



, HAVING



, ORDER BY



, LIMIT



,OFFSET



et toutes les fonctionnalités de MongoDB en dehors carte, réduire, filtrer et laisser. En savoir plus dans le billet de blog .







la toile



Comme toujours, PhpStorm inclut toutes les mises à jour de WebStorm 2020.3 . Le plus notable est la prise en charge de Tailwind CSS.



CSS de Tailwind



PhpStorm complète les classes Tailwind dans les fichiers HTML et après la directive @apply. Il fournira également un complétion de pseudo-classe.



tailwind-completion-after-apply



Si vous survolez une classe dans des fichiers HTML et CSS, un aperçu du CSS résultant s'affiche. L'aperçu est également disponible pendant la fin du code, dans la fenêtre contextuelle de documentation F1 / Ctrl + Q.



tailwind-completion-for-pseudo-class-variants



PhpStorm prend en charge les personnalisations de tailwind.config.js. Par exemple, si vous définissez un thème avec de nouvelles couleurs, dans la fenêtre contextuelle de saisie semi-automatique, des classes seront créées avec le nom de la couleur personnalisée.



support de personnalisation de tailwind








Vous pouvez télécharger PhpStorm 2020.3 sur la page « Quoi de neuf ».



Et voici une vidéo (en anglais) montrant les principales caractéristiques de la version:





C'est tout ce temps. Nous serons heureux d'avoir des questions, des souhaits, des rapports de bogues et des réflexions dans les commentaires.



All Articles