W3docs

endif

A palavra-chave "endif" é uma estrutura de controle em PHP usada para marcar o fim de uma instrução "if". Explore a sintaxe e o uso neste artigo.

endif

A palavra-chave endif faz parte da sintaxe alternativa do PHP para estruturas de controle. Em vez de envolver o corpo de uma instrução if entre chaves ({ ... }), a sintaxe alternativa abre o bloco com dois-pontos (:) e o fecha com endif;. Esse estilo foi adicionado especificamente para tornar o PHP mais legível quando mesclado com HTML em templates.

Este artigo aborda a sintaxe do endif, quando utilizá-lo e os problemas comuns que podem surgir.

Sintaxe

Um bloco if padrão usa chaves; a sintaxe alternativa substitui a chave de abertura por : e a chave de fechamento por endif;:

A sintaxe PHP do endif

// Brace syntax
if ($condition) {
  // code to be executed
}

// Alternative syntax — equivalent
if ($condition):
  // code to be executed
endif;

Duas regras são importantes:

  • A linha da condição termina com dois-pontos (:), não com uma chave de abertura.
  • O bloco é fechado com endif, que deve ser seguido de ponto e vírgula (;). Omitir o ponto e vírgula é a causa mais comum de erro de parse aqui.

O mesmo padrão se aplica às demais estruturas de controle: endforeach, endfor, endwhile e endswitch.

Exemplos

Vejamos alguns exemplos práticos de como a palavra-chave endif pode ser utilizada:

Exemplos 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.

Nesses exemplos, utilizamos a palavra-chave endif para marcar o fim de uma instrução if. A sintaxe alternativa também suporta ramificações else e elseif dentro do mesmo bloco, todas fechadas com um ú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: B

Observe que com a sintaxe alternativa você escreve elseif como uma única palavra — else if (duas palavras) não é válido em um bloco com sintaxe alternativa.

Usando endif em templates HTML

Esta é a razão pela qual endif existe. Quando PHP e HTML são misturados, uma } no final é fácil de perder de vista, enquanto <?php endif; ?> lembra quase uma tag de fechamento e indica claramente qual estrutura está sendo encerrada. Compare os dois 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; ?>

A forma alternativa mantém seus templates legíveis, especialmente quando os blocos se aninham — é por isso que a maioria dos templates PHP legados (e muitos sistemas de templates embutidos em frameworks) a utilizam.

Problemas comuns

  • O ponto e vírgula após endif é obrigatório. endif sem ; gera um erro de parse.
  • Não misture sintaxes em um mesmo bloco. Não é possível abrir com { e fechar com endif, nem abrir com : e fechar com }.
  • Use elseif, não else if. A forma com duas palavras só é permitida na sintaxe com chaves.

Benefícios

O uso da palavra-chave endif traz diversos benefícios, incluindo:

  • Maior legibilidade: A palavra-chave endif torna as estruturas de controle mais fáceis de ler, especialmente em templates onde HTML e PHP estão misturados.
  • Estrutura mais clara: Ela fornece um marcador de fechamento nomeado e distinto para cada bloco de controle, reduzindo a chance de chaves desbalanceadas em layouts complexos.

Conclusão

A palavra-chave endif permite fechar um bloco if com um marcador nomeado e claro em vez de uma chave, o que é mais vantajoso quando o PHP está embutido em HTML. Para se aprofundar, consulte o guia completo de if / else / elseif e explore os fechadores de sintaxe alternativa correspondentes: endforeach, endfor e endswitch.

Prática

Prática
Quais das afirmações a seguir são verdadeiras sobre a diretiva endif em PHP?
Quais das afirmações a seguir são verdadeiras sobre a diretiva endif em PHP?
Was this page helpful?