Image de couverture : Symfony Polyfill 1.34.0 : écrivez du code PHP 8.4/8.5/8.6 dès aujourd'hui
tech

Symfony Polyfill 1.34.0 : écrivez du code PHP 8.4/8.5/8.6 dès aujourd'hui

12 April 2026
4 min de lecture
15 vues
Sébastien Muler

Introduction

La version 1.34.0 de Symfony Polyfill vient d'être publiée par Fabien Potencier. Elle embarque dix nouveaux polyfills couvrant des fonctionnalités de PHP 8.4, 8.5 et 8.6, ainsi qu'un polyfill dédié à l'extension PHP deepclone. L'objectif est simple : écrire un code compatible avec les APIs PHP futures tout en continuant à tourner sur les versions actuellement déployées en production.

Pour les TPE/PME qui maintiennent des projets Symfony sur des environnements stables (PHP 8.1 ou 8.2 en production), cette release est une opportunité concrète d'adopter progressivement les bonnes pratiques sans migration brutale.


Ce que couvre cette version

Sous-classes PDO pilote-spécifiques

PHP 8.4 a introduit des classes dédiées : Pdo\Mysql, Pdo\Pgsql, Pdo\Sqlite, Pdo\Odbc, Pdo\Firebird et Pdo\Dblib. PHP 8.5 déprécie les équivalents sur la classe PDO de base. Ce polyfill les rend disponibles sur les versions antérieures :

use Pdo\Mysql;

$connection = new Mysql('mysql:host=localhost;dbname=shop', $user, $pass);
$connection->setAttribute(Mysql::ATTR_MULTI_STATEMENTS, false);

⚠️ La méthode statique PDO::connect() introduite en même temps que les sous-classes n'est pas polyfillée.

Fonctions d'arrondi bcmath

PHP 8.4 ajoute bcround(), bcceil() et bcfloor() pour arrondir des nombres de précision arbitraire. Ces fonctions sont désormais disponibles via le polyfill sur PHP < 8.4, ce qui est particulièrement utile pour les applications e-commerce manipulant des montants financiers sans perte de précision flottante.

Polyfill deepclone

Nouveau dans cette version : un polyfill pour l'extension PHP deepclone, qui permet un clonage profond natif des objets. Si l'extension n'est pas installée sur le serveur, le polyfill prend le relais de manière transparente.


Intégration pratique : checklist pour vos projets

1. Installation via Composer

Ajoutez le package à vos dépendances :

composer require symfony/polyfill-php84
# Selon vos besoins :
composer require symfony/polyfill-php85
composer require symfony/polyfill-php86

Pour le polyfill deepclone :

composer require symfony/polyfill-deepclone

Les polyfills Symfony s'activent automatiquement via les fichiers de bootstrap — aucune configuration supplémentaire n'est requise dans services.yaml.

2. Étendre la matrice CI

Profitez-en pour tester votre code sur plusieurs versions PHP dans votre pipeline. Exemple avec GitHub Actions :

jobs:
  tests:
    strategy:
      matrix:
        php: ['8.1', '8.2', '8.3', '8.4']
    steps:
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
      - run: composer install
      - run: php bin/phpunit

Cette matrice garantit que votre code polyfillé fonctionne à la fois sur votre environnement de production (ex. PHP 8.1) et sur les versions cibles futures.

3. Analyse statique avec PHPStan ou Psalm

Assurez-vous que votre configuration PHPStan pointe vers la version PHP cible :

# phpstan.neon
parameters:
    phpVersion: 80400
    level: 8

Cela permet à l'analyseur de valider l'utilisation des nouvelles APIs (comme Pdo\Mysql) même si votre runtime est PHP 8.1. Avec les polyfills installés, les types sont correctement définis et l'analyse ne remontera pas de faux positifs.

4. Tests d'intégration ciblés

Pour valider le comportement des polyfills en conditions réelles, isolez vos tests dans un environnement Docker avec la version PHP de production :

FROM php:8.1-cli
RUN docker-php-ext-install pdo pdo_mysql
COPY . /app
WORKDIR /app
RUN composer install
CMD ["php", "bin/phpunit", "--testsuite", "integration"]

Lancez ce conteneur dans votre CI pour garantir que le polyfill se substitue bien à l'extension native absente.


Pourquoi c'est important pour les TPE/PME

Dans un contexte de ressources limitées, les migrations PHP majeures sont souvent repoussées. Symfony Polyfill permet une stratégie de migration progressive :

  • Vous adoptez les nouvelles APIs dès aujourd'hui dans le code.
  • Votre hébergement (VPS, serveur dédié IONOS, shared hosting) reste sur PHP 8.1 ou 8.2 sans risque.
  • Quand la mise à jour PHP est enfin planifiée, le code est déjà prêt — il suffit de retirer les polyfills devenu inutiles.

Composer signale automatiquement les polyfills superflus via composer why une fois la version PHP cible atteinte.


Conclusion

Symfony Polyfill 1.34.0 est une release dense et directement exploitable. L'adoption des sous-classes PDO driver-spécifiques en particulier est un chantier à anticiper dès maintenant, PHP 8.5 marquant la dépréciation officielle des constantes sur la classe PDO de base.

La démarche recommandée chez MulerTech : installer les polyfills, élargir la matrice CI, câbler PHPStan sur la version cible, et migrer le code métier progressivement par module. Aucune raison d'attendre la prochaine fenêtre de maintenance pour commencer.

Source originale : Symfony Blog — Symfony Polyfill 1.34.0 released

Partager cet article