🚨 ¡Nueva review! ✨ Mi ratón favorito para programar: el Logitech MX Master 3S . ¡Échale un ojo! 👀

Mejora tu Calidad de Código con PHP CS Fixer

Configura y automatiza el estilo de tu código PHP en minutos.

Escrito por domin el 18 de enero de 2026

🧹 Mantén tu código PHP impoluto con PHP CS Fixer

Seguro que te ha pasado que abres un archivo de hace tiempo o de otra persona y te sangran los ojos porque hay espacios donde deberían ir tabs (o viceversa), llaves en la misma línea, en la siguiente… un caos.

Para evitar esto y no perder amigos en los Code Reviews, existe PHP CS Fixer.

PHP Code Quality with PHP CS Fixer

¿Qué es esto?

PHP-CS-FIXER es una herramienta que corrige automáticamente el estilo de tu código para que siga los estándares que tú (o la comunidad, como PSR-12) defináis. Es como tener a un senior revisando cada espacio y punto y coma, pero sin que te juzgue y te mire mal.

🛠️ Instalación

Lo más fácil es usar Composer. Ejecuta esto en tu proyecto:

composer require --dev friendsofphp/php-cs-fixer

Nota: Lo instalamos como dependencia de desarrollo (--dev) porque no lo necesitas en producción.

⚙️ Configuración

Aunque puedes usarlo sin configurar, lo ideal es crear un archivo .php-cs-fixer.dist.php en la raíz de tu proyecto o dónde quieras, porque le puedes pasar el path por parámetro. En este fichero defines tus reglas.

Un ejemplo sencillo y robusto para empezar:

<?php

$finder = (new PhpCsFixer\Finder())
    ->in(__DIR__)
    ->exclude('var')
    ->exclude('vendor');

return (new PhpCsFixer\Config())
    ->setRules([
        '@PSR12' => true,
        'array_syntax' => ['syntax' => 'short'],
        'no_unused_imports' => true,
    ])
    ->setFinder($finder);

¿Qué hace esto?

  1. Finder: Le dice dónde buscar archivos (en __DIR__ o sea, todo el proyecto) y qué ignorar (var, vendor).
  2. Rules:
    • @PSR12: Aplica todo el estándar PSR-12 (el moderno).
    • array_syntax: Fuerza usar [] en lugar de array().
    • no_unused_imports: Borra los use que no estés usando.

🔥 Configuración algo más compleja.

Si quieres ponerte serio de verdad, aquí tienes una configuración que uso yo para proyectos grandes. Activa reglas risky que cambian lógica levemente para mejorar rendimiento y seguridad, y formatea hasta el último rincón.

<?php

$finder = (new PhpCsFixer\Finder())
    ->in(__DIR__)
    ->exclude('var')
    ->exclude('vendor');

return (new PhpCsFixer\Config())
    ->setRiskyAllowed(true)
    ->setRules([
        '@PSR12' => true,
        '@Symfony' => true,
        'array_syntax' => ['syntax' => 'short'],
        'no_unused_imports' => true,
        'ordered_imports' => ['sort_algorithm' => 'alpha'],
        'no_useless_else' => true,
        'no_useless_return' => true,
        'concat_space' => ['spacing' => 'one'],
        'binary_operator_spaces' => [
            'default' => 'align_single_space_minimal',
        ],
        'method_chaining_indentation' => true,
        'strict_param' => true,
        'declare_strict_types' => true,
        'single_quote' => true,
        'trailing_comma_in_multiline' => ['elements' => ['arrays']],
    ])
    ->setFinder($finder);

Cuidado: strict_param y declare_strict_types pueden romper funcionalidad si tu código no es estricto con los tipos.

🚀 Cómo usarlo

Para revisar si hay errores (sin hacer ningún cambio en el código):

vendor/bin/php-cs-fixer fix --dry-run --diff

Para arreglar los errores automáticamente y sin piedad:

vendor/bin/php-cs-fixer fix

⚡ El Truco del Makefile

Escribir ese comando todo el rato es un poco tostón. Si usas un Makefile en tu proyecto, añade esto:

fix-code:
	vendor/bin/php-cs-fixer fix

check-code:
	vendor/bin/php-cs-fixer fix --dry-run --diff

Ahora solo tienes que ejecutar en tu terminal:

make fix-code

¡EA! Código limpio en un segundo.

📝 Un par de consejos extra

  1. Git Ignore: PHP CS Fixer crea un archivo de caché .php-cs-fixer.cache. Añádelo a tu .gitignore para no subirlo.

🤖 Integración Continua (CI/CD) en GitHub

De nada sirve tener reglas si nadie las cumple. La mejor forma de evitar que entre código bobo a tu rama main es crear un guardián en tu repositorio.

Crea un archivo en .github/workflows/php-style.yml:

name: Check PHP Style

on: [push, pull_request]

jobs:
  php-cs-fixer:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3' # Tu versión de PHP
          extensions: mbstring, intl
          tools: composer:v2

      - name: Install dependencies
        run: composer install --no-progress --prefer-dist

      - name: Run PHP CS Fixer
        # Si falla (exit code != 0), el pipeline se pone rojo 🔴
        run: vendor/bin/php-cs-fixer fix --dry-run --diff --verbose

¿Qué conseguimos con esto?

  1. Cada vez que alguien hace un push o abre una Pull Request, GitHub ejecuta este escáner.
  2. Usamos --dry-run: No modifica los archivos, solo avisa.
  3. Si hay errores de estilo, el comando falla y bloquea el merge (si tienes las reglas de la rama protegidas).

Conclusión

EA con todo esto y sobretodo si compartes un proyecto con más gente, se acabarán las disputas sobre los espacios y demás historias, y todo el código estará exactamente igual identado solo con ejecutar PHP-CS-FIXER.

¡Nos vemos en el siguiente commit o en los bares🍻! 🚀