PHPStorm Tips #5 : Toute la pouissance des Live Templates
Tags: phpstorm, productivity, php, webdev
Published: 2022-07-19 19:58:34

Aujourd'hui, on attaque un autre morceau de la tempête, les **Live Templates** !

C'est ultra puissant et customisable, l'idée c'est de se l'approprier pour faire vos propres Live Templates. Prêts ? Allez on attaque.

## Le principe ⚙️

L'idée est de "programmer" un raccourci de texte qui va générer un snippet de code préformaté. Par exemple, si t'en as marre de copier/coller la license des fichiers :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ojobi75s5pnsazfioz74.png)

Tu peux créer un Live Template, et dès que tu écris "license", et que tu complètes avec `Tab`, BIM, le snippet est généré.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylsjyrxjbvdx8ik0sdif.gif)

Pour faire ça, rendez-vous dans les Live Templates :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j4ykcg7daah2h6kdh57q.png)

Puis en cliquant sur le +, on peut ajouter un Live Template dans le langage que l'on veut, ici, on va le créer en PHP :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jzhaheo18fyuh0o66u2k.gif)

## Les variables 🔢

Alors si c'était juste des snippet fixes, ça serait vite limité. Là où PHPStorm est pratique, c'est que ton snippet peut contenir des variables dynamiques. 

Si on reprend l'exemple de la license pour rajouter l'année :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d0w6vpu0rdnzx458evtt.png)

Ici, on veut que 2022 soit toujours l'année actuelle, pour ça, on **va passer par une variable** en modifiant notre Live Template :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oaj3s28nactv4cvzixde.png)

La syntaxe pour les variables c'est `$NOMDELAVARIABLE$`.
Une fois qu'on a des variables, on va pouvoir les éditer :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/93zemeuxiu6mqg37rsh7.png)

Dans cette nouvelle fenêtre, on va retrouver les variables de notre Live Template, et on va pouvoir modifier tout ça :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ikqlv04lmjhsu5asyem7.png)

Chaque variable peut suivre une **Expression** pré-définie : une date, un formattage spécifique (camel case, snake case...), le nom d'un fichier, une concaténation... tu peux voir [toutes les Expressions sur cette page](https://www.jetbrains.com/help/idea/template-variables.html#predefined_functions). 

Nous, ici, on veut l'année en cours, donc on va utiliser `date()` :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0iv3zog7iwmhvvd4wmnp.png)

En lui passant "yyyy", on aura l'année ! Donc maintenant, quand on va utiliser notre Live Template, il sera toujours à l'année actuelle :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8wrolq9990nfibfp7xdd.gif)

## Autre example 🧠

Allez, pour illustrer, un exemple un peu plus complexe avec l'utilisation des variables, un Live Template "**specfunc**" pour rapidement créer une function pour un PHPSpec :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uypa0kos0ghp2lpwyctb.png)

Rien de bien compliqué, 2 variables : (_ne faites pas attention à `$END$` pour le moment_) :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vwf7ypawjdwiqliv4rqz.png)

`FUNC_NAME_SNAKE` prendra donc la variable de `FUNC_NAME` sous forme de snake case ! Donc d'abord on appelle notre live template en tapant "specfunc", puis le Live Template se lance, on a donc la main pour écrire notre variable, et l'autre est calculée :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cu9gy8bujniv8t6lwi2l.gif)

Et voilà, plus besoin de se faire des crampes aux mains en écrivant une phrase avec des underscores.

Note : on peut mettre `$END$` pour placer le curseur où on veut une fois que le Live Template est terminé. Ici, je le mets au niveau du commentaire, pour pouvoir rapidement le supprimer.

> ⛈️ **Le commentaire de l'expert** : Pour aller plus loin, la doc de JetBrains est plutôt bien fichue, n'hésitez pas à aller fouiner des bonnes astuces : [https://www.jetbrains.com/help/idea/using-live-templates.html](https://www.jetbrains.com/help/idea/using-live-templates.html)