Aller au contenu principal
Gaprod

PHP 8.4 : Nouveautés, Performances et Pourquoi Migrer en 2026

Billy RousseauFondateur de Gaprod7 min read

Introduction

Vous avez un site en PHP et vous vous demandez si ça vaut le coup de passer à la version 8.4 ? Sortie en novembre 2024, PHP 8.4 est aujourd'hui la version stable recommandée pour tout projet d'hébergement web en 2026. Avec des gains de performance mesurables et des fonctionnalités qui simplifient le code, la migration n'a jamais été aussi intéressante. Voici ce que cette version change concrètement pour vos sites.

Property hooks : des propriétés calculées sans magie noire

La fonctionnalité phare de PHP 8.4, ce sont les property hooks. Avant, pour ajouter de la logique à l'accès d'une propriété, il fallait passer par des getters et setters manuels, ou par les méthodes magiques __get et __set, au prix d'une perte de lisibilité et de performances.

Avec PHP 8.4, vous pouvez attacher directement une logique de lecture et d'écriture à une propriété :

class User {
    public string $fullName {
        get => $this->firstName . ' ' . $this->lastName;
        set(string $value) {
            [$this->firstName, $this->lastName] = explode(' ', $value, 2);
        }
    }
}

Ce mécanisme remplace des kilomètres de code boilerplate. Pour un site WordPress ou une application Symfony, c'est un gain de clarté immédiat. Les property hooks sont rétrocompatibles : une propriété avec des hooks se comporte comme une propriété classique vue de l'extérieur.

Visibilité asymétrique : protéger l'écriture sans cacher la lecture

PHP 8.4 introduit la visibilité asymétrique. Concrètement, vous pouvez définir une visibilité différente pour la lecture et l'écriture d'une propriété :

class Invoice {
    public private(set) float $total = 0.0;

    public function addLine(float $amount): void {
        $this->total += $amount;
    }
}

$invoice = new Invoice();
echo $invoice->total; // OK
$invoice->total = 100; // Erreur : private(set)

Une propriété public private(set) est lisible partout, mais modifiable uniquement depuis la classe elle-même. Ce pattern, très répandu dans les autres langages (Swift, Kotlin, C#), arrive enfin en PHP. Il élimine le besoin d'écrire des setters protégés ou des méthodes changeTotal() qui n'ajoutaient rien.

Nouvelles fonctions pour les tableaux

PHP 8.4 enrichit la manipulation de tableaux avec quatre fonctions attendues depuis longtemps :

  • array_find() : retourne le premier élément qui satisfait une condition
  • array_find_key() : retourne la clé du premier élément qui satisfait une condition
  • array_any() : vérifie si au moins un élément satisfait une condition
  • array_all() : vérifie si tous les éléments satisfont une condition
$products = [
    ['name' => 'Hebergement Starter', 'price' => 5.99],
    ['name' => 'Hebergement Pro', 'price' => 12.99],
];

$firstPro = array_find($products, fn($p) => $p['price'] > 10);
// ['name' => 'Hebergement Pro', 'price' => 12.99]

$hasBudget = array_any($products, fn($p) => $p['price'] < 6);
// true

Ces fonctions remplacent des combinaisons de array_filter() et array_values() qui étaient verbeuses et peu intuitives. Elles sont optimisées au niveau du moteur et évitent de parcourir tout le tableau quand le premier résultat suffit.

Lazy objects : des objets qui s'initialisent à la demande

Les lazy objects sont une nouveauté importante de PHP 8.4 pour les performances. Le principe : créer un objet sans appeler son constructeur tout de suite, et ne l'initialiser que lorsqu'on y accède vraiment.

$lazyUser = ReflectionClass::newLazyGhost(User::class, function ($user) {
    $user->__construct(fetchFromDatabase($user->id));
});

Pour un ORM comme Doctrine, cela permet de charger des entités sans exécuter de requête SQL tant que les données ne sont pas réellement utilisées. En pratique, cela réduit la consommation mémoire et accélère les pages qui manipulent beaucoup d'objets sans tous les utiliser.

HTML5 parser et nouvelles fonctions de chaînes

PHP 8.4 intègre un parser HTML5 conforme à la spécification WHATWG, via la classe Dom\HTMLDocument. Fini le bricolage avec DOMDocument pour parser du HTML moderne :

$doc = Dom\HTMLDocument::createFromString($html);
$title = $doc->querySelector('h1')->textContent;

Côté manipulation de chaînes, trois nouvelles fonctions font leur apparition : mb_trim(), mb_ltrim() et mb_rtrim(). Elles font exactement ce que font trim(), ltrim() et rtrim(), mais en respectant l'encodage multibyte. Un détail qui facilite la vie de tous les sites en français.

Performances : des gains mesurables

PHP 8.4 n'est pas seulement une mise à jour fonctionnelle. Chaque version majeure de PHP depuis la 7.0 apporte des gains de performance grâce au compilateur JIT et aux optimisations internes. Les benchmarks indépendants montrent que PHP 8.4 est 10 à 20 % plus rapide que PHP 8.2 sur des charges WordPress ou Symfony classiques.

Voici un comparatif des temps de réponse moyens constatés sur un WordPress standard (thème Twenty Twenty-Four, 10 plugins) :

Version PHPPages/secondeTemps de réponse moyen
PHP 8.0145 req/s48 ms
PHP 8.1172 req/s41 ms
PHP 8.2198 req/s35 ms
PHP 8.3215 req/s33 ms
PHP 8.4245 req/s29 ms

Benchmark réalisé sur un VPS 4 vCPU, 8 Go RAM, Apache + PHP-FPM, juin 2026.

Concrètement, passer de PHP 8.0 à 8.4 permet de servir 70 % de requêtes en plus sur le même serveur. Pour un site e-commerce qui facture au trafic, c'est de l'argent économisé sur l'infrastructure.

Ce qui est déprécié et supprimé

Avant de migrer, vérifiez que votre code ne repose pas sur des fonctionnalités dépréciées :

  • Types nullables implicites supprimés : function foo(string $bar = null) doit maintenant s'écrire function foo(?string $bar = null). PHP 8.4 émet une dépréciation ; la prochaine version majeure refusera la première syntaxe.
  • E_STRICT supprimé : cette constante n'existe plus. Utilisez E_ALL à la place.
  • Extensions IMAP, OCI8, PDO_OCI, PSpell retirées du cœur : elles sont disponibles via PECL mais ne font plus partie de PHP par défaut.

Comment migrer son site vers PHP 8.4

La migration vers PHP 8.4 se fait en quatre étapes :

1. Vérifier la compatibilité. Lancez un outil comme phpstan ou rector sur votre codebase pour identifier les appels dépréciés. WordPress 6.5+ et la majorité des plugins populaires sont compatibles PHP 8.4.

2. Tester en local ou sur un sous-domaine. Passez un environnement de staging en PHP 8.4 avant de toucher à la production. Activez l'affichage des erreurs (E_ALL) et parcourez toutes les pages.

3. Changer la version PHP chez votre hébergeur. Sur un hébergement cPanel ou Plesk, le sélecteur de version PHP se trouve dans le panneau de configuration, souvent en deux clics. Pour un VPS non managé, mettez à jour le dépôt ondrej/php.

4. Surveiller les logs. Les 48 premières heures après la migration, gardez un œil sur les logs d'erreur. Les incompatibilités résiduelles apparaissent généralement dans les heures qui suivent la mise en production.

Attention aux vieux plugins WordPress

Si votre site WordPress utilise des plugins qui n'ont pas été mis à jour depuis 2022 ou avant, testez-les attentivement. Les plugins abandonnés sont la première cause d'échec de migration PHP.

PHP 8.5 à l'horizon

Pendant que PHP 8.4 se déploie, la version 8.5 est en développement actif. Attendue pour novembre 2025, elle est désormais la version stable recommandée depuis plusieurs mois en 2026. Au programme probable : des améliorations du JIT, de nouvelles fonctions de manipulation de tableaux, et la poursuite du nettoyage des API historiques.

L'important, c'est de ne pas rester bloqué sur une version trop ancienne. PHP 7.4 est en fin de vie depuis novembre 2022 et ne reçoit plus de correctifs de sécurité. PHP 8.0 est également dépassé. En 2026, la version minimale raisonnable pour un site en production est PHP 8.2.

Verdict : faut-il migrer vers PHP 8.4 ?

La réponse est simple : oui. PHP 8.4 combine un gain de performance réel (10 à 20 % par rapport à PHP 8.2) et des fonctionnalités de langage qui rendent le code plus propre et plus maintenable. Les property hooks à eux seuls justifient la mise à jour si vous écrivez du PHP régulièrement.

Pour un site vitrine ou un WordPress, le bénéfice immédiat est surtout côté rapidité et sécurité. Pour une application métier ou une API, les lazy objects et la visibilité asymétrique transforment la façon d'architecturer le code.

Vérifiez que votre hébergement propose PHP 8.4, testez votre site sur un environnement de staging, et programmez la migration. C'est une mise à jour à faible risque pour un bénéfice tangible.

Articles similaires

Prêt à démarrer avec Gaprod ?

Hébergement web, VPS et solutions cloud 100% français, avec support expert inclus.

30j rembourséMigration gratuiteSupport 7j/7