constantes indefinidas son tratadas como cadenas por PHP: docs. Tomando este hecho, creo que a través en el idioma Inglés:
If "WHATEVER_THIS_ISNT_DEFINED", then do something.
... es lógico que es "verdad" - no se está comparando nada a cualquier otra cosa.
Es por eso que, al hacer las declaraciones if
, se recomienda incluir una evaluación específica. Si está comprobando si es falso, escríbalo en el código: if (something === false)
contra if (something)
. Si está revisando para ver si está configurado, use isset
, y así sucesivamente.
Además, esto resalta la importancia de desarrollar avisos y advertencias habilitados. Su servidor lanzará un aviso para este problema:
Aviso: El uso de indefinido constante MY_CONST - asumido 'MY_CONST' en some_script.php en la línea 5
Encienda avisos y advertencias para desarrollar , apáguelos para la producción. Solo puede ayudar!
Wow, PHP sorprende de nuevo. Razón probable: "porque no se evalúa como falso" :) – Rekin
No, no hay sorpresas. La advertencia explica todo, "Aviso: uso de la constante indefinida MY_CONST - asumida como 'MY_CONST' en some_script.php en la línea 5". Desarrollar con avisos y advertencias activadas :) –
Mantenga las [comparaciones sueltas de PHP] (http://php.net/manual/en/types.comparisons.php#types.comparisions-loose) en mente para saber por qué '" WHATEVER_THIS_ISNT_DEFINED "== TRUE'. –