Hay muchos "¿Por qué PHP arroja un error aquí?" preguntas Bueno, esto es un poco diferente. He encontrado el siguiente código, mientras que volver a trabajar algún código escrito por un compañero de trabajo:¿por qué PHP no está arrojando un error de análisis?
foreach($arr as $key => $value) {http://google.com/
echo $value;
// ...
}
Lo primero que pensé: "Umm ... qué vergüenza, sino que debe haber pegado accidentalmente en que existe ...", seguido de: "Wait ... no hay forma de que este código realmente se ejecute ... eso debería ser un error de sintaxis ". Y, sin embargo:
$ php -l test.php
No syntax errors detected
Y, en efecto, (como mucho código PHP que aparentemente no debería de ejecución) que se ejecuta en la producción sin problemas. Así que hice una pequeña prueba:
foreach($arr as $key => $value) {http://google.com/ <-- original, no error
foreach($arr as $key => $value) {http: <-- also no syntax error
foreach($arr as $key => $value) {http <-- bingo! "Unexpected T_ECHO..."
Qué golosina poco de la gramática de PHP está produciendo resultados tan extraños?
(estoy usando PHP 5.3.5)
'http:' es una etiqueta, y '//' es un comentario. He visto este truco antes. – Borealid
Por supuesto. No tenía idea de que PHP tenía 'goto'. Difícil. – chesles
Ugh. Otro artículo sobre "¿por qué? * Infierno" ¿tuvo que implementarse esta triste característica en un lenguaje que ya está plagado de tontas funciones? " lista. –