(int) et (ant)
<?php
const INT = static function($x) {return (int)$x * (int)$x;};
echo (int)(" 123s ");
// fatal error
// echo ((int))(" 123s ");
const ant = static function($x) {return (int)$x * (int)$x;};
echo (ant)(" 123s ");
echo ((ant))(" 123s ");
Il est possible de stocker une Closure dans une constante, depuis PHP 8.5. Cela signifie que la closure doit être appelée en mettant la constante entre parenthèses : PHP extrait d’abord la valeur de la constante, puis appelle la closure.
Il y a autre chose qui se met entre parenthèses : un transtypage. Et le cast a une priorité très élevée. Ainsi, lorsqu’une constante int est créée, elle invoque toujours le transtypage et ignore la constante.
Les constantes ne devraient peut-être pas être nommées comme des transtypages ?
See Also
PHP Error Messages
PHP Features
Last updated: 11 October 2026