Fermer

PHP – Code formatter ou linter automatique

L’outil le plus répandu en PHP pour formater son code suivant les standards (PSR-12) est PHP-CS-Fixer.

PHP-CS-Fixer analyse les fichiers PHP et les réécrit automatiquement pour qu’ils respectent un même style de code (indentation, espaces, imports, guillemets, etc.), selon un standard comme PSR-12 ou des règles qui sont définis.

Il permet ainsi d’uniformiser un projet entier en une commande, sans changer le comportement du code.

  1. Installer PHP-CS-Fixer globalement
composer global require friendsofphp/php-cs-fixer
  1. Récupérer le chemin global des binaires de composer
composer global config bin-dir --absolute
  1. L’ajouter au PATH
echo 'export PATH="$PATH:/CHEMIN/CI-DESSUS"' >> ~/.bashrc
source ~/.bashrc

Ensuite, pour chaque projet :

  1. Initialiser un dépôt git
git init && git add -A && git commit -m "Init"
  1. Créer le fichier de configuration à la racine du projet
nano .php-cs-fixer.dist.php
<?php
$finder = PhpCsFixer\Finder::create()
    ->in(__DIR__)
    ->exclude([
        'vendor',
        'node_modules',
        'storage',
        'cache',
        'var',
    ])
    ->name('*.php')
    ->ignoreDotFiles(true)
    ->ignoreVCS(true);

return (new PhpCsFixer\Config())
    ->setRiskyAllowed(false)
    ->setIndent('    ')
    ->setLineEnding("\n")
    ->setRules([
        '@PSR12' => true,

        // Tableaux
        'array_syntax' => ['syntax' => 'short'],
        'trailing_comma_in_multiline' => ['elements' => ['arrays']],
        'no_whitespace_before_comma_in_array' => true,
        'whitespace_after_comma_in_array' => true,

        // Imports
        'ordered_imports' => ['sort_algorithm' => 'alpha'],
        'no_unused_imports' => true,
        'single_import_per_statement' => true,

        // Chaînes et opérateurs
        'single_quote' => true,
        'concat_space' => ['spacing' => 'one'],
        'binary_operator_spaces' => ['default' => 'single_space'],
        'unary_operator_spaces' => true,

        // Espaces et lignes vides
        'no_trailing_whitespace' => true,
        'no_extra_blank_lines' => true,
        'blank_line_before_statement' => [
            'statements' => ['return', 'throw', 'try'],
        ],
        'no_blank_lines_after_phpdoc' => true,

        // Divers
        'no_empty_statement' => true,
        'no_closing_tag' => true,
        'lowercase_keywords' => true,
        'native_function_casing' => true,
    ])
    ->setFinder($finder);
  1. Voir les changements sans rien modifier
php-cs-fixer fix --dry-run --diff
  1. Appliquer
php-cs-fixer fix
Exemple de php-cs-fixer en action

La documentation officielle : https://github.com/PHP-CS-Fixer/PHP-CS-Fixer

Laisser une réponse

Votre adresse email ne sera pas publiée. Les champs obligatoires sont indiqués par *