PHP
PHP 8.3 : les nouveautés qui comptent pour votre site
PHP 8.3 : typed constants, #[Override], json_validate(), classes readonly. Ce qui casse, ce qui accélère, et comment migrer WordPress ou PrestaShop sans risque.
Si votre site tourne encore sur PHP 7.4 ou 8.0, la question n’est plus « faut-il migrer » mais « combien de temps avant que ça devienne un problème ». PHP 7.4 ne reçoit plus aucun correctif depuis fin 2022, PHP 8.0 depuis fin 2023, et la plupart des hébergeurs mutualisés sérieux ont déjà relevé leur version minimale à PHP 8.1 ou 8.2. Rester sur une version obsolète, c’est cumuler trois problèmes en même temps : des failles de sécurité non corrigées, des performances laissées sur la table, et un jour ou l’autre, une mise à jour forcée par l’hébergeur qui casse tout sans prévenir. PHP 8.3, sorti en novembre 2023, est aujourd’hui la version stable et mature à cibler pour tout projet neuf ou toute refonte.
Voici ce qui compte réellement dans cette version, ce qui change dans le code, et comment migrer sans mauvaise surprise sur un site WordPress, PrestaShop ou une application Symfony sur mesure.
Pourquoi ce n’est plus une option
Chaque version de PHP suit un cycle de support strict : deux ans de corrections actives, puis une troisième année réservée aux failles de sécurité critiques. Voici où en sont les versions encore présentes sur des sites en production :
| Version | Sortie | Support actif jusqu’à | Sécurité jusqu’à |
|---|---|---|---|
| PHP 7.4 | nov. 2019 | nov. 2021 | nov. 2022 (terminé) |
| PHP 8.0 | nov. 2020 | nov. 2022 | nov. 2023 (terminé) |
| PHP 8.1 | nov. 2021 | nov. 2023 | nov. 2025 (terminé) |
| PHP 8.2 | déc. 2022 | déc. 2024 | déc. 2026 |
| PHP 8.3 | nov. 2023 | nov. 2025 | nov. 2027 |
Un site encore sur PHP 7.4 ou 8.0 tourne donc sans aucun correctif de sécurité depuis plusieurs années. Pour un site e-commerce qui manipule des données de paiement ou des comptes clients, c’est un risque qu’aucun assureur ni aucun audit ne validera. Ce type de suivi fait partie du travail de fond d’un contrat de maintenance WordPress : vérifier la version PHP active, planifier la montée de version avant l’échéance, et tester en amont plutôt que de subir un blocage un lundi matin.
Le langage change : ce qui compte pour votre code
PHP 8.3 n’est pas une révolution comme l’a été PHP 8.0 avec le JIT et les types union. C’est une version de consolidation, mais plusieurs ajouts changent concrètement la façon d’écrire du code robuste.
Les constantes de classe typées
Jusqu’ici, une constante de classe pouvait recevoir n’importe quel type sans contrôle. PHP 8.3 permet de la typer, exactement comme une propriété :
class Facture {
public const string DEVISE = 'EUR';
public const int TVA_TAUX = 20;
}
Sur un projet avec plusieurs développeurs ou une base de code qui vit dans le temps, ça évite qu’une constante censée être un entier se retrouve un jour redéfinie en chaîne dans une classe fille, avec un bug silencieux à la clé.
L’attribut #[Override]
Quand une méthode redéfinit une méthode parente, l’attribut #[Override] déclenche une erreur si la méthode parente n’existe plus (renommée, supprimée lors d’un refactor de la classe mère) :
class RemiseNoel extends Remise {
#[Override]
public function calculer(float $prix): float {
return $prix * 0.9;
}
}
Utile surtout sur des projets qui dépendent de librairies tierces mises à jour régulièrement : ça capture à la compilation ce qui, avant, ne se voyait qu’en production.
Les classes readonly complètes
PHP 8.2 avait introduit les propriétés readonly une par une. PHP 8.3 permet de marquer la classe entière :
readonly class Commande {
public function __construct(
public string $reference,
public float $montant,
) {}
}
Toutes les propriétés deviennent readonly automatiquement, sans avoir à répéter le mot-clé sur chaque ligne. Pratique pour les objets valeur (DTO, entités immuables) qui reviennent souvent dans les architectures Symfony ou dans les couches de service d’une application sur mesure.
json_validate() et l’accès dynamique aux constantes
Avant PHP 8.3, valider un JSON obligeait à le décoder puis à vérifier l’absence d’erreur — coûteux si on n’a pas besoin du résultat décodé. La fonction json_validate() fait le contrôle seul, sans allouer de mémoire pour la structure :
if (json_validate($payload)) {
// le JSON est valide, on peut le traiter
}
Autre ajout discret mais utile : l’accès dynamique aux constantes de classe, MyClass::{$nomConstante}, qui évite de passer par constant() avec une chaîne concaténée à la main.
Les gains de performance, concrètement
Chaque version majeure de PHP depuis la 8.0 apporte des optimisations internes au moteur Zend, indépendamment des nouvelles fonctionnalités visibles. PHP 8.3 continue sur cette lancée avec des gains mesurés généralement entre 3 et 8 % sur des benchmarks de charge type WordPress ou Symfony par rapport à PHP 8.2, essentiellement grâce à des optimisations sur la gestion des tableaux et des appels de fonctions. Ce n’est pas le levier principal pour améliorer les Core Web Vitals d’un site — le cache objet, les requêtes SQL et les assets front pèsent bien plus lourd — mais c’est un gain obtenu sans changer une ligne de code métier, uniquement en passant à jour l’interpréteur PHP côté serveur.
WordPress et WooCommerce sous PHP 8.3
WordPress core est compatible PHP 8.3 depuis la version 6.4. Le vrai risque ne vient jamais du cœur, mais des extensions et surtout des page builders : Elementor, Divi et consorts embarquent des dizaines de milliers de lignes de code tiers, avec des dépendances qu’on ne maîtrise pas et des mises à jour qui traînent. C’est exactement ce qui justifie de coder un thème en PHP natif plutôt que d’empiler des plugins de mise en page — un développement WordPress sur mesure limite le nombre de dépendances externes et rend la montée de version PHP prévisible, testable, sans dépendre du planning de mise à jour d’un éditeur tiers.
Pour WooCommerce, la compatibilité PHP 8.3 est annoncée depuis les versions 8.x, mais chaque extension de paiement ou de gestion des stocks doit être vérifiée individuellement. La règle pratique : jamais de montée de version PHP en production directe, toujours un passage par un environnement de staging identique.
PrestaShop, Symfony et les applications sur mesure
PrestaShop 8 est compatible PHP 8.1 à 8.3 selon les modules installés — c’est justement là que ça coince le plus souvent, sur des boutiques qui ont accumulé des modules tiers non maintenus depuis PrestaShop 1.6 ou 1.7. Avant toute migration, un audit des modules actifs et de leurs dépendances Composer est indispensable, sous peine de découvrir en production qu’un module de paiement ne charge plus.
Pour une application Symfony, la migration est généralement plus simple à condition que les dépendances Composer soient à jour : Symfony 6.4 et 7.x supportent nativement PHP 8.3. C’est l’occasion de vérifier aussi le rapport de compatibilité des paquets tiers avant de pousser en production.
La checklist de migration (sans tout casser)
Une montée de version PHP se prépare, elle ne s’improvise pas un vendredi soir. Dans l’ordre :
- Vérifier la version active :
php -vsur le serveur, et la version exigée par chaque plugin/module dans son fichier de déclaration. - Lister les dépendances obsolètes avec Composer :
composer outdated --directpour repérer ce qui bloque une montée de version. - Faire tourner un scan de compatibilité statique, par exemple via l’outil PHPCompatibility avec PHP_CodeSniffer, pour détecter les fonctions dépréciées ou supprimées avant même de changer d’environnement.
- Cloner l’environnement de production sur un staging avec la nouvelle version PHP installée, et faire passer le parcours utilisateur critique (panier, paiement, formulaire de contact) de bout en bout.
- Surveiller les logs d’erreurs PHP (
display_errorsdésactivé maislog_errorsactif) pendant au moins 48 heures après la bascule en production, avant de considérer la migration terminée.
Les points de rupture classiques entre PHP 8.1/8.2 et 8.3 ne sont pas dans les nouveautés listées plus haut, mais dans les dépréciations accumulées : les propriétés dynamiques non déclarées (dépréciées depuis PHP 8.2) génèrent désormais des avertissements systématiques, et certains anciens plugins WordPress ou modules PrestaShop truffés de @property non déclarées vont remplir les logs, voire planter si le thème ou l’hébergeur convertit les avertissements en erreurs fatales.
FAQ
PHP 8.3 va-t-il ralentir ou casser mon site WordPress existant ?
Non, à condition de tester avant de basculer en production. WordPress core et WooCommerce sont compatibles depuis fin 2023, mais un thème construit sur un page builder ou des extensions anciennes peut afficher des avertissements, voire des erreurs fatales si des fonctions dépréciées sont utilisées. Un test complet en staging avant la bascule évite toute mauvaise surprise.
Faut-il attendre PHP 8.4 plutôt que de migrer vers PHP 8.3 maintenant ?
Non. PHP 8.3 est stable, largement supporté par les hébergeurs et les CMS, avec de la sécurité garantie jusqu’en novembre 2027. Attendre une version plus récente ne fait que prolonger l’exposition d’un site resté sur PHP 7.4 ou 8.0, dont le support est déjà terminé.
Combien de temps prend une migration PHP pour un site WordPress ou PrestaShop ?
Ça dépend surtout du nombre d’extensions actives et de leur ancienneté, pas de la taille du site. Un site avec un thème natif et peu de plugins se migre en quelques heures de tests. Un site avec des dizaines de modules PrestaShop hérités peut demander plusieurs jours d’audit avant la bascule. Dans les deux cas, un devis détaillé permet de cadrer précisément l’effort avant de s’engager.
À lire ensuite · PHP
Un projet PHP sérieux ?
Applications Symfony robustes, API Platform, reprise d'existant — code testé et documenté.