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
Run → External Tools → External Tools Configurations...- Cliquer sur
ProgrampuisNew - 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
Window → Preferences → General → Keys- Chercher
Run Last Launched External Tool - Assigner un raccourci (ex:
Ctrl+Shift+Fpour le fichier actif) - Pour le projet complet, créer un second raccourci (ex:
Ctrl+Shift+P)
4. Workflow quotidien
- Coder dans Eclipse
- Sauvegarder (Ctrl+S)
- Analyser le fichier (Ctrl+Shift+F)
- Corriger les erreurs signalées
- Analyser tout le projet avant commit (Ctrl+Shift+P)
- 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 |