RFC: Interdire l'usage de plusieurs 'default' dans un 'switch'
La RFC Make defining multiple default cases in a switch a syntax error partait du constat qu’il est aujourd’hui possible, en PHP, de placer plusieurs sections default
dans un bloc switch
.
Par exemple, en PHP 5.6, il est possible d’écrire ceci :
$a = 10; switch ($a) { case 1: echo "cas 1\n"; break; default: echo "premier default\n"; break; default: // C'est dans ce second default qu'on passe, pas dans le premier echo "second default\n"; break; }
Dans ce cas, c’est la dernière section default
qui est utilisée par PHP (là où, différences d’implémentation oblige, HHVM utilise la première).
Bien sûr, les discussions sur la mailing-list php-internals@afup
ont montré que nous étions tous d’accord sur le fait qu’utiliser deux cas default
dans une même structure switch
n’a pas de sens et devrait donc être interdit et lever une erreur de syntaxe (en PHP 7). De plus, si PHP 5.7 sort un jour, cela devrait lever un avertissement E_DEPRECATED
, pour préparer l’arrivée de PHP 7. J’ai donc posté en ce sens sur internals@.
Cette RFC ayant été acceptée quelques jours après, PHP 7 sera plus cohérent sur ce point.