rem recomendado para máximo líneas las largo instrucciones inicio fin código cuál comentarios caracteres bloque basicas anidados php semicolon

recomendado - ¿Por qué el punto y coma es opcional en la última instrucción en php?



php</ php (3)

Me sorprendió cuando ejecuto el siguiente código en mi editor:

<?php echo "hello"; echo "world" ?>

Como puede ver, al código le falta un punto y coma (;), ¡pero aún funciona!

¿Alguien sabe cómo funciona esto y por qué? es {0,1} aquí ?.


Eso es porque el punto y coma no es un símbolo para terminar una declaración.

Se ve así porque ocurre casi siempre al final de un enunciado.

Tenga en cuenta que casi siempre ... podría ser una pista.

¡Intentando deshacernos de la asimetría, podemos decir que siempre es entre enunciados!

Eso lleva directamente al significado real del punto y coma: no termina las declaraciones: separa las declaraciones .
Obviamente, después de la última declaración, no hay nada que separar.

(La mayoría de los lenguajes permiten un punto y coma al final de un bloque de todos modos, para evitar los errores triviales relacionados. Se puede hacer descartando el punto y coma o, más explícitamente, insertando un comando que no hace nada después del punto y coma).


Porque el punto y coma le dice al analizador que ha llegado al final de esa instrucción. Le permite saber que la próxima pieza de texto es una nueva instrucción. Sin embargo, la etiqueta de cierre indica que estamos al final de todas las instrucciones, no es necesario analizar nada más. Como no estamos analizando nada más, no necesitamos el punto y coma del final de la instrucción, está implícito.


Porque la etiqueta de cierre implica un punto y coma. Puede leer más sobre esto en el manual bajo separación de instrucciones .

Y una cita de allí:

Como en C o Perl, PHP requiere que las instrucciones se terminen con un punto y coma al final de cada declaración. La etiqueta de cierre de un bloque de código PHP implica automáticamente un punto y coma; no necesita tener un punto y coma para terminar la última línea de un bloque PHP. La etiqueta de cierre para el bloque incluirá la nueva línea inmediatamente posterior si hay una presente.

Un ejemplo para probar esto:

1. script con falta de punto y coma al final, pero con etiqueta de cierre:

<?php echo "1"; echo "2" //^ semicolon missing ?>

salida:

12

2. secuencia de comandos con falta de punto y coma al final, pero sin etiqueta de cierre:

<?php echo "1"; echo "2" //^ semicolon missing (closing tag missing)

salida:

Error de análisis: error de sintaxis, final inesperado del archivo, esperando '','' o '';'' en