Dernier petit nouveau dans l'écosystème des packages de Laravel, la V1.0.0 de laravel/pint fut tag ce 14 juillet.
Le package se décrit comme un "réparateur de style dogmatique", voyons ensemble de quoi il en découle !
Installation
Pint nécessite au minimum une version 8 de PHP et s'installe simplement depuis composer :
1composer require laravel/pint
Le package est propulsé par laravel-zero/framework
, un framework principalement maintenu par Nuno Maduro, développeur de la core team de Laravel, et basé sur Illuminate.
Ça sert à quoi ?
Pint est une surcouche "dogmatique" d'un robuste package d'analyse et de correction automatique de code : FriendsOfPHP/PHP-CS-Fixer.
Créé à l'origine par Fabien Potencier (aka le créateur de Symfony), le package permet de standardiser rapidement votre code en seulement quelques lignes de commande.
Par exemple, si vous souhaitez standardiser votre code en PSR 12, il suffira de lancer la commande suivante :
1php php-cs-fixer.phar fix /path/to/project --rules=@PSR12
Respecter des conventions est important pour rendre votre code consistant.
PHP-CS-Fixer
est par nature agnostique, cela signifie qu'il n'a pas été créé pour corriger spécifiquement une architecture, un projet ou un framework ... dans notre cas Laravel.
Pint s'additionne donc à PHP-CS-Fixer
en fournissant tout un lot de règles préconstruites adaptées à un projet Laravel d'où son sobriquet "dogmatique".
Voyons désormais plus concrètement le fonctionnement de Pint !
Simple usage
En exécutant la commande suivante, Pint corrigera automatiquement toutes les erreurs à partir de son preset par défaut : Laravel.
1vendor/bin/pint
Nous verrons un peu plus tard ce que sont les presets.
Si vous souhaitez exécuter Pint sans pour autant effectuer les modifications, juste pour prévisualiser les erreurs, la commande suivante est disponible :
1vendor/bin/pint --test
Les presets
Un preset est une configuration préétablie contenant un ensemble de rule, il en existe 3 dans pint : laravel
, psr12
& symfony
.
Par défaut, le preset utilisé en exécutant les commandes précédentes était celui de Laravel, il est toutefois possible de préciser manuellement le preset à utiliser lors de l'utilisation du bin :
1vendor/bin/pint --preset laravel2vendor/bin/pint --preset psr123vendor/bin/pint --preset symfony
Vous trouverez un détail des presets à cette URL.
Ces presets contiennent donc des rules, chaque rule étant une contrainte à appliquer à votre code, voici par exemple un extrait du preset laravel
:
1// pint/resources/presets/laravel.php2return ConfigurationFactory::preset([3 'array_indentation' => true,4 'array_syntax' => ['syntax' => 'short'],5 'binary_operator_spaces' => [6 'default' => 'single_space',7 ],8 'blank_line_after_namespace' => true,9 [...]
La rule array_indentation s'assure que tous les elements d'un array
dispose de la même indentation, array_syntax standardise le style d'écriture de tous vos array
, blank_line_after_namespace garantit qu'un saut de ligne est présent après la déclaration du namespace ...
Il existe énormément de rules différentes que vous trouverez dans ce dictionnaire !
Modifier un preset
Si une rule d'un preset est manquante ou ne vous convient pas, vous pouvez facilement le modifier en créant un fichier pint.json
à la racine de votre projet.
1{2 "preset": "laravel",3 "rules": {4 "array_syntax": {5 "syntax": "long"6 }7 }8}
Ce fichier s'additionnera au preset sélectionné et vous permettra d'ajouter ou bien de modifier une règle existante !
Conclusion
Pint est un outil encore jeune qui manque de véritables nouveautés pour se démarquer de ses ainés.
Toutefois, il propose une surcouche simplifiant l'utilisation de PHP-CS-Fixer
et peut constituer une première approche painless de la correction automatique de code !
A lire
Autres articles de la même catégorie
API Platform Conference 2024 : On y sera !
Rendez-vous le 19 septembre 2024 à Lille
William Suppo
Sondage annuel de Laravel France
Laravel France a besoin de vous !
Mathieu De Gracia
Top 10 des posts en 2022
L'année se termine !
Mathieu De Gracia