Aller au contenu principal

Configurer Eclipse + PHPStan pour Symfony 8 avec PHP 8.4

Comment allier un IDE confortable et une analyse statique rigoureuse pour le développement PHP moderne

Introduction

Le développement PHP moderne avec PHP 8.4 apporte des fonctionnalités puissantes comme les property hooks et l'asymmetric visibility, qui permettent d'écrire un code plus élégant et plus sûr. Symfony 8 intègre parfaitement ces nouveautés.

Le défi : les IDE traditionnels (Eclipse PDT, NetBeans, etc.) peinent encore à supporter pleinement PHP 8.4. Si certains reconnaissent bien la nouvelle syntaxe, la détection des erreurs statiques (méthodes inexistantes, types incorrects) reste souvent lacunaire.

Plutôt que de chercher l'IDE parfait qui ferait tout, nous proposons une approche pragmatique :

  • Un IDE pour l'édition (Eclipse) : bon support de la syntaxe PHP 8.4
  • Un outil d'analyse statique (PHPStan) : détection rigoureuse des erreurs

Objectif de cet article : configurer Eclipse et PHPStan pour travailler efficacement avec Symfony 8 et PHP 8.4, en automatisant la détection des erreurs directement dans l'IDE.

1. Installation de PHPStan

composer require --dev phpstan/phpstan
composer require --dev phpstan/extension-installer
composer require --dev phpstan/phpstan-symfony
composer require --dev phpstan/phpstan-doctrine

L'extension-installer charge automatiquement les extensions sans avoir à les déclarer dans la config.

2. Configuration de PHPStan

Fichier phpstan.neon à la racine du projet :

# phpstan.neon
parameters:
    level: 8
    paths:
        - src
        #- tests
    phpVersion: 80400
    
    # Doctrine
    doctrine:
        objectManagerLoader: null
    
    # Symfony
    symfony:
        containerXmlPath: var/cache/dev/App_KernelDevDebugContainer.xml
    
    # Options strictes (noms corrects)
    checkUninitializedProperties: true
    reportUnmatchedIgnoredErrors: true
    reportMaybes: true
    
    # Exclure des dossiers
    excludePaths:
        analyseAndScan:
            - vendor/*
            - tests/_support/*
            - var/cache/*
    
    # Ignorer certaines erreurs (optionnel)
    ignoreErrors:
        # PHP 8.4 property hooks (pas encore totalement supportés)

Vérification :

vendor/bin/phpstan analyse

3. Intégration dans Eclipse

3.1 External Tool pour le fichier actif

  1. Run → External Tools → External Tools Configurations...
  2. Cliquer sur Program puis New
  3. Remplir :
Champ Valeur
Name PHPStan (Fichier actif)
Location /usr/bin/php
Working Directory /chemin/vers/votre/projet (chemin absolu)
Arguments vendor/bin/phpstan analyse ${resource_loc}

Onglet Refresh : cocher Refresh resources upon completion
Onglet Common : cocher Display in favorites menu → External Tools

3.2 External Tool pour le projet complet

Champ Valeur
Name PHPStan (Projet complet)
Location /usr/bin/php
Working Directory /chemin/vers/votre/projet
Arguments vendor/bin/phpstan analyse

3.3 Raccourcis clavier

  1. Window → Preferences → General → Keys
  2. Chercher Run Last Launched External Tool
  3. Assigner un raccourci (ex: Ctrl+Shift+F pour le fichier actif)
  4. Pour le projet complet, créer un second raccourci (ex: Ctrl+Shift+P)

4. Workflow quotidien

  1. Coder dans Eclipse
  2. Sauvegarder (Ctrl+S)
  3. Analyser le fichier (Ctrl+Shift+F)
  4. Corriger les erreurs signalées
  5. Analyser tout le projet avant commit (Ctrl+Shift+P)
  6. Commit

5. Résultat

Type d'erreur Détection Eclipse Détection PHPStan
Méthode inexistante ❌ Non ✅ Oui
Property hooks ✅ Oui ⚠️ Faux positifs (ignorés)
Type incorrect ⚠️ Partiel ✅ Oui
Retour manquant ⚠️ Partiel ✅ Oui



 

6. Dépannage

Problème Solution
Variable references non-existent resource Utiliser un chemin absolu dans Working Directory
PHPStan ne trouve pas les classes Vérifier les dépendances : composer install
Beaucoup d'erreurs sur les property hooks Ajouter les règles dans ignoreErrors
containerXmlPath invalide Générer le cache Symfony : php bin/console cache:dev

7. Ressources

Cet article a été rédigé dans le cadre du développement d'une application de facturation pour photographes avec Symfony 8, PHP 8.4 et Doctrine ORM 3.6.

Profile picture for user admin Stephane K

Écrit le

Il y'a 7 heures
Modifié
Il y'a 6 heures
Loading ...
Besoin d'un conseil personnalisé ?
Envoyer