Cas limites des constantes de classe dynamiques
<?php
class X {
const A = null;
}
// ?? works with class constants
echo X::A ?? 3;
// parse error, invalid syntax
//echo X::{A} ?? 3;
// quotes are needed, or a global constant
const A = 'A';
echo X::{A};
// @ does not hide undefined constants
echo @X::{'B'};
PHP 8.3 introduit une nouvelle syntaxe pour accéder dynamiquement aux constantes de classe : class::{constant-name}.
Les constantes de classe fonctionnent avec l’opérateur de coalescence ??, tant que la constante de classe elle-même a la valeur null. En revanche, ?? ne fonctionne pas avec la constante de classe dynamique et produit une erreur de syntaxe.
La syntaxe de constante de classe dynamique fonctionne avec des noms de constantes sans guillemets, mais dans ce cas, la constante globale correspondante doit exister et contenir le nom réel de la constante.
Enfin, l’opérateur de silence @ ne continue pas l’exécution en cas de constante de classe inexistante : il masque le message d’erreur et arrête l’exécution.
See Also
- Dynamic Class Constant Edge Cases [Try me]
PHP Features
Last updated: 11 October 2026