Types multiples de constantes
<?php
class x {
const int|string A=1, B='abc';
const int|string C = PHP_OS === 'win' ? 0 : 'not win';
}
echo strlen(x::B);
Les constantes de classe peuvent être typées depuis PHP 8.3. Les types union sont possibles, et ils sont valides avec les constantes de classe.
Dans le premier cas, deux constantes sont déclarées avec des types différents. PHP se plaint si l’un des types ne s’applique pas aux valeurs, donc le type union est nécessaire pour s’assurer que les deux constantes sont bien déclarées. Elles doivent évidemment être déclarées sur des expressions const distinctes.
Dans le second cas, la constante est définie avec une condition. Désormais, rand() ne peut pas être appelé dans cette partie du code, mais l’utilisation d’autres constantes, natives comme PHP_OS, __FILE__, personnalisées, globales ou définies avec define() peut influencer l’expression et conduire à des résultats et des types différents. Il s’agit d’un cas théorique qui n’a jamais été observé en pratique.
See Also
- Multiple Const Types [Try me]
PHP Error Messages
PHP Features
Last updated: 04 October 2026