Sortie en novembre 2022, la version 8.2 de PHP introduit plusieurs changements qui, sans lien direct avec l’accessibilité au sens strict, finissent par toucher du code chargé de générer des attributs ARIA en boucle sur des listes de composants. Ce constat, fait en migrant un thème sur mesure vers cette version, mérite d’être détaillé pour qui maintient des boucles de rendu générant des identifiants ARIA uniques.
Les classes en lecture seule et les générateurs d’identifiants
PHP 8.2 introduit les propriétés de classe en lecture seule (readonly) de façon plus permissive, mais surtout renforce la vérification de leur immutabilité. Un compteur d’identifiants ARIA implémenté par erreur comme propriété readonly incrémentée à chaque appel provoquera désormais une erreur fatale, alors qu’il pouvait passer inaperçu ou générer un avertissement discret dans une version antérieure :
final class GenerateurIdAria {
public readonly int $compteur;
public function suivant(): string {
$this->compteur++; // Erreur fatale en PHP 8.2 : propriété readonly
return 'onglet-' . $this->compteur;
}
}
Le correctif consiste à ne jamais déclarer readonly une propriété destinée à évoluer, et à utiliser une propriété statique ou un compteur transmis par référence pour ce type de générateur d’identifiant utilisé dans une boucle de rendu de composants ARIA (onglets, accordéons, groupes de boutons radio).
La dépréciation des propriétés dynamiques

PHP 8.2 déprécie la création de propriétés dynamiques sur les classes qui n’étendent pas explicitement stdClass. Ce changement touche directement les objets de configuration utilisés pour transporter les attributs ARIA d’un composant vers sa fonction de rendu, un motif courant dans les thèmes construits avant l’arrivée des classes de configuration typées :
class ConfigOnglet {
public string $id;
public string $libelle;
}
$config = new ConfigOnglet();
$config->id = 'onglet-1';
$config->libelle = 'Vendredi';
$config->aria_selectionne = 'true'; // Avertissement de dépréciation en PHP 8.2
La dernière ligne déclenche un avertissement de dépréciation, car aria_selectionne n’a jamais été déclarée dans la classe ConfigOnglet. Sans correction, ces avertissements s’accumulent silencieusement dans les journaux d’erreurs, jusqu’à ce qu’une future version de PHP les transforme en erreurs bloquantes. Le correctif consiste à déclarer explicitement toutes les propriétés utilisées, y compris celles qui portent un état ARIA :
class ConfigOnglet {
public string $id;
public string $libelle;
public string $aria_selectionne = 'false';
}
Pourquoi ce constat concerne l’accessibilité, pas seulement la robustesse du code
Une erreur fatale ou un avertissement massif dans les journaux, provoqué par ces changements, interrompt parfois le rendu complet d’un composant plutôt que de simplement l’appauvrir visuellement. Un onglet dont la génération PHP échoue silencieusement peut disparaître entièrement de la page, y compris son rôle ARIA et son contenu, ce qui retire une fonctionnalité entière plutôt que de simplement en dégrader la présentation. La vigilance sur ces changements de version dépasse donc la seule robustesse technique : elle conditionne la présence même des attributs d’accessibilité dans le rendu final.
Un test de régression suffit à sécuriser la migration
Avant de basculer un hébergement vers PHP 8.2, activer l’affichage de tous les avertissements en environnement de test révèle rapidement ces deux catégories de problèmes :
ini_set('display_errors', '1');
error_reporting(E_ALL);
- Parcourir chaque gabarit contenant une boucle de génération de composants ARIA (onglets, accordéons, carrousels) ;
- Vérifier l’absence d’erreur fatale et d’avertissement de dépréciation dans les journaux ;
- Comparer le rendu HTML avant et après migration sur ces composants précis, attribut par attribut.
Une migration de version PHP n’est jamais un non-évènement pour l’accessibilité d’un site : elle mérite les mêmes vérifications qu’un changement de thème.
En résumé
La version 8.2 de PHP, disponible depuis novembre 2022, ne cible aucune fonctionnalité d’accessibilité en particulier, mais son renforcement de la rigueur du langage — propriétés en lecture seule, dépréciation des propriétés dynamiques — peut interrompre silencieusement le rendu de composants générant des attributs ARIA en boucle. Un audit ciblé de ces boucles avant toute migration de version évite la mauvaise surprise d’un composant qui perd son accessibilité sans qu’aucune erreur visible n’alerte l’équipe.