Spesso scrivendo codice PHP ci capita di dover inserire del codice HTML all’interno di un controllo di flusso (es. if/else) o dentro ad un cilco (es. while).
Mi è capitato spesso di vedere un errore nella scrittura di questo codice, vogliamo quindi cercare di chiarire gli aspetti di questo caso.
Noi faremo un esmpio con utlizzando l’if, ma quanto diremo è valido per gli altri controlli di flusso e cicli.
Come sappiamo, quando scriviamo un if in cui il codice da eseguire quando la condizione è verificata è composto da una sola istruzione, possiamo omettere le parentesi graffe.
Ad esempio un codice come il seguente è corretto:
if (condizione)
echo "ciao";
Questo ci potrebbe far supporre che anche il seguente codice lo sia:
if (condizione) ?>
HTML
Questa seconda valutazione però è errata, per convincersene basta analizzare il codice con un po' di attenzione.
Infatti il codice precedente equivale a:
if (condizione) ; //notare punto e virgola ?>
HTML
Questo perchè il php ci cosnente di omettere il punto e virgola nell'ultima istruzione prima della chiusura del php. Da questa lettura risulta chiaro che ci siamo "buciati" l'if con l'istruzione vuota, che data l'assenza di parentesi viene anche vista compe l'unica istruzione del blocco di codice dell'if.
Per evitare questo problema basta prendere la buona abitudine di mettere sempre la graffa, anche se abbiamo una sola riga di codice.
Quanto detto per l'if è valido anche pre l'else, il for, il while...