W3docs

endif

La parola chiave "endif" è una struttura di controllo in PHP usata per chiudere un'istruzione "if". Scopri sintassi e utilizzo in questo articolo.

endif

La parola chiave endif fa parte della sintassi alternativa di PHP per le strutture di controllo. Invece di racchiudere il corpo di un'istruzione if tra parentesi graffe ({ ... }), la sintassi alternativa apre il blocco con i due punti (:) e lo chiude con endif;. Questo stile è stato introdotto appositamente per rendere PHP leggibile quando viene mescolato con HTML nei template.

Questo articolo tratta la sintassi di endif, quando utilizzarlo e le insidie più comuni.

Sintassi

Un blocco if standard usa le parentesi graffe; la sintassi alternativa sostituisce la parentesi graffa di apertura con : e quella di chiusura con endif;:

La sintassi PHP di endif

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

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

Due regole fondamentali:

  • La riga della condizione termina con i due punti (:), non con una parentesi graffa di apertura.
  • Il blocco viene chiuso con endif, che deve essere seguito da un punto e virgola (;). Omettere il punto e virgola è la causa più comune di un errore di analisi in questo contesto.

Lo stesso schema si applica alle altre strutture di controllo: endforeach, endfor, endwhile e endswitch.

Esempi

Vediamo alcuni esempi pratici di come si può utilizzare la parola chiave endif:

Esempi di 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.

In questi esempi, utilizziamo la parola chiave endif per segnare la fine di un'istruzione if. La sintassi alternativa supporta anche i rami else e elseif all'interno dello stesso blocco, che si chiudono tutti con un unico 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

Nota che con la sintassi alternativa si scrive elseif come una sola parola — else if (due parole) non è valido in un blocco con sintassi alternativa.

Uso di endif nei template HTML

Questo è il motivo per cui endif esiste. Quando PHP e HTML sono mescolati, una } finale è facile da perdere di vista, mentre <?php endif; ?> si legge quasi come un tag di chiusura e indica chiaramente quale struttura sta terminando. Confronta i due stili:

<!-- 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 i template leggibili, specialmente quando i blocchi si annidano, motivo per cui la maggior parte dei template PHP legacy (e molti template engine integrati nei framework) si affidano a essa.

Insidie comuni

  • Il punto e virgola dopo endif è obbligatorio. endif senza ; genera un errore di analisi.
  • Non mescolare le sintassi in un unico blocco. Non è possibile aprire con { e chiudere con endif, né aprire con : e chiudere con }.
  • Usa elseif, non else if. La forma a due parole è consentita solo nella sintassi con parentesi graffe.

Vantaggi

L'uso della parola chiave endif offre diversi vantaggi, tra cui:

  • Maggiore leggibilità: La parola chiave endif rende le strutture di controllo più facili da leggere, soprattutto nei template dove HTML e PHP sono mescolati.
  • Struttura più chiara: Fornisce un marcatore di chiusura distinto e nominativo per ogni blocco di controllo, riducendo il rischio di parentesi graffe non corrispondenti in layout complessi.

Conclusione

La parola chiave endif consente di chiudere un blocco if con un marcatore chiaro e nominativo invece di una parentesi graffa, il che risulta particolarmente utile quando PHP è incorporato in HTML. Per approfondire, consulta la guida completa su if / else / elseif, ed esplora le altre chiusure con sintassi alternativa: endforeach, endfor e endswitch.

Esercizio

Pratica
Quali delle seguenti affermazioni sono vere riguardo alla direttiva endif in PHP?
Quali delle seguenti affermazioni sono vere riguardo alla direttiva endif in PHP?
Was this page helpful?