Didier Sampaolo, Développeur Senior
Didier Sampaolo
Développeur Senior

Codez avec style, adoptez le standard PSR-2

Coder avec style, ce n'est pas une question vestimentaire. Votre code se doit d'être tout le temps nickel, jusque dans les moindres détails. Il existe plusieurs standards, qui sont des règles strictes de formatage de votre code : combien de lignes sauter, où placer les accolades, etc - ça ne couvre pas la structure de votre projet mais uniquement la "mise en page" de vos scripts. J'ai toujours été fan de PSR-2, et c'est celui qu'utilise Laravel. On part sur celui-là ?
Les Standards PHP

Les PSR, pour PHP Standard Recommendation, sont - comme leur nom l'indiquent - des ensembles de recommandations qui veillent à ce que les scripts PHP soient interopérables (que les miens ne posent pas de problème chez vous, et vice versa). Il y en a pour à peu près tout, qui vont de comment nommer et classer vos fichiers pour pouvoir les charger à la volée (PSR-4) jusqu'à comment faire participer vos utilisateurs à la sécurité de vos applis (PSR-9), en passant par celui qui nous intéresse aujourd'hui, le "Code Styling", PSR-2.


Le standard PSR-2

Pour faire simple, jetez un oeil sur la page officielle de description du standard. Vous y trouverez des exemples de code : c'est exactement à cela que le votre doit ressembler. Ça peut paraître trivial, mais quand vous lisez le code de quelqu'un d'autre, chaque accolade déplacée va induire une petite "friction mentale" dont on se passerait bien à ce moment là. Idem quand vous livrez du code (à un collègue, un client, ...) : chaque choix que vous ferez vous apportera quelques grammes de culpabilité : "et s'il aurait préféré que je saute une ligne ?". En adoptant un Standard, on oublie ces problèmes, puisque tout le monde est exactement d'accord sur la tête que le code doit avoir, à la virgule près.

On note au passage que Symfony utilise un Coding Standard qui lui est dédié, basé sur PSR-2, et détaillé ici.


Configurer PhpStorm

Pour indiquer à PhpStorm quel style utiliser, faites un tour dans les Settings avec Control+Alt+S (ou dans File/Settings). Allez dans Editor / Code Style / PHP, cliquez sur "Set from" (le petit lien en haut à droite) puis PSR-1/PSR-2 (PSR-2 est une extension du standard PRS-1). C'est prêt. Pour formatter votre code, faites Alt+L avant de sauvegarder. Si PhpStorm vous répond "No lines changed" du premier coup, vous avez gagné.


Se forcer à tenir le standard

Pour éviter qu'on se relâche, l'outil PHPCS vérifiera à votre place que les conventions de style sont respectés.
Ça s'installe avec composer :

composer global require "squizlabs/php_codesniffer=*"

À partir de là, vous aurez deux nouvelles commandes :
  • phpcs (PHP Code Sniffer) vous permet de voir à quels endroits votre code ne respecte pas le standard choisi
  • phpcbf (PHP Code Beautifier and Fixer) modifiera votre code automatiquement 

Voici un exemple de ligne de commande à lancer à la racine de votre projet :

phpcbf -p --colors --standard=PSR2 app/Models/

  • -p vous montre l'avancement en temps réel
  • --colors permet d'avoir une sortie en couleurs
  • --standard détermine quel standard appliquer
  • et le chemin peut être tout le projet . (auquel cas, vous devriez ajouter --ignore=vendor pour ne pas trafiquer les dépendances de votre projet, installées via composer) ou un dossier ou fichier particulier.