endif
La palabra clave "endif" es una estructura de control en PHP que marca el final de una sentencia "if". Exploramos su sintaxis y uso en detalle.
endif
La palabra clave endif forma parte de la sintaxis alternativa de PHP para estructuras de control. En lugar de encerrar el cuerpo de una sentencia if entre llaves ({ ... }), la sintaxis alternativa abre el bloque con dos puntos (:) y lo cierra con endif;. Este estilo fue añadido específicamente para que PHP resulte más legible cuando se intercala con HTML en plantillas.
Este artículo cubre la sintaxis de endif, cuándo utilizarlo y los errores más frecuentes que suelen cometer los desarrolladores.
Sintaxis
Un bloque if estándar usa llaves; la sintaxis alternativa reemplaza la llave de apertura por : y la llave de cierre por endif;:
La sintaxis PHP de endif
// Brace syntax
if ($condition) {
// code to be executed
}
// Alternative syntax — equivalent
if ($condition):
// code to be executed
endif;Hay dos reglas importantes:
- La línea de la condición termina con dos puntos (
:), no con una llave de apertura. - El bloque se cierra con
endif, que debe ir seguido de un punto y coma (;). Omitir el punto y coma es la causa más común de un error de análisis en este contexto.
El mismo patrón se aplica a las demás estructuras de control: endforeach, endfor, endwhile y endswitch.
Ejemplos
Veamos algunos ejemplos prácticos de cómo se puede usar la palabra clave endif:
Ejemplos de PHP endif
<?php
// Example 1
$x = 5;
if ($x == 5):
echo "The value of x is 5." . PHP_EOL;
endif;
// Output: The value of x is 5.
// Example 2
$x = 10;
if ($x > 5):
echo "The value of x is greater than 5.";
else:
echo "The value of x is less than or equal to 5.";
endif;
// Output: The value of x is greater than 5.En estos ejemplos, usamos la palabra clave endif para marcar el final de una sentencia if. La sintaxis alternativa también admite ramas else y elseif dentro del mismo bloque, todas las cuales se cierran con un único endif;:
<?php
$score = 82;
if ($score >= 90):
echo "Grade: A";
elseif ($score >= 80):
echo "Grade: B";
elseif ($score >= 70):
echo "Grade: C";
else:
echo "Grade: F";
endif;
// Output: Grade: BHay que tener en cuenta que con la sintaxis alternativa se escribe elseif como una sola palabra — else if (dos palabras) no es válido en un bloque con sintaxis alternativa.
Uso de endif en plantillas HTML
Esta es la razón por la que existe endif. Cuando PHP y HTML se mezclan, una } al final es fácil de perder, mientras que <?php endif; ?> se lee casi como una etiqueta de cierre e indica claramente qué estructura finaliza. Compara los dos estilos:
<!-- Hard to scan: brace floating in markup -->
<?php if ($loggedIn) { ?>
<p>Welcome back!</p>
<?php } ?>
<!-- Self-documenting: alternative syntax -->
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php endif; ?>La forma alternativa mantiene las plantillas legibles, especialmente cuando los bloques se anidan, razón por la cual la mayoría de las plantillas PHP heredadas (y los sistemas de plantillas integrados en muchos frameworks) dependen de ella.
Errores frecuentes
- El punto y coma después de
endifes obligatorio.endifsin;genera un error de análisis. - No mezcles sintaxis en un mismo bloque. No puedes abrir con
{y cerrar conendif, ni abrir con:y cerrar con}. - Usa
elseif, noelse if. La forma de dos palabras solo está permitida en la sintaxis con llaves.
Ventajas
El uso de la palabra clave endif tiene varias ventajas, entre ellas:
- Mayor legibilidad: La palabra clave
endifhace que las estructuras de control sean más fáciles de leer, especialmente en plantillas donde se mezclan HTML y código PHP. - Estructura más clara: Proporciona un marcador de cierre distintivo y con nombre para cada bloque de control, lo que reduce el riesgo de llaves desemparejadas en diseños complejos.
Conclusión
La palabra clave endif permite cerrar un bloque if con un marcador claro y con nombre en lugar de una llave, lo que resulta especialmente útil cuando PHP está embebido en HTML. Para profundizar, consulta la guía completa de if / else / elseif y explora los cierres equivalentes con sintaxis alternativa: endforeach, endfor y endswitch.