Estoy teniendo algunos problemas para entender por qué el siguiente no da lugar a un error de compilación en 5.3.3 (con error de salida correctamente en mis compañeros de trabajo 5.2.5):PHP permitiendo que el código no válido en sentencias switch
<?php
echo "starting\n";
switch(1) {
case 2:
echo "two\n";
break;
defalut: // note the misspelling
echo "deflaut\n";
}
echo "ending\n";
en vez de darme un error del compilador (o incluso una advertencia) que sólo da esto:
starting
ending
Sin embargo, si lo uso en una sentencia if me da lo que cabe esperar:
<?php
if (1 == deflaut)
echo "deflaut2\n";
da:
PHP Notice: Use of undefined constant deflaut - assumed 'deflaut' in ...
¿Por qué es esto? ¿Existe un entorno en el que pueda desactivarlo para decirle que sea estricto sobre este tipo de cosas?
Una gran pregunta. Me inclino a pensar que es un error en 5.3.3 pero estoy interesado en ver cuáles son las respuestas. – Endophage
Sin mencionar el hecho de que muchas personas están leyendo el código pero no la pregunta :-P – Endophage
@Ben: Esa no es la pregunta. – hakre