PHP short tags, qualche appunto

I tag PHP, e i PHP short tags sono le sintassi per avvisare l’interprete PHP che quello che segue è codice da tradurre: sono molteplici. Infatti dal classico: <?php ?> si passa al contrastato <? ?>, all’inutile <% %>, e all’esotico <script language=”php”> </script>.

A differenza di <?php ?> e <script language=”php”> </script> gli altri, per disincentivarne l’utilizzo sono attivi solo se abilitato il rispettivo parametro parametro in php.ini:

<? ?> short_open_tag
<% %> asp_tags

Ognuno di questi ha pro e contro:

  • <? ?> è a rischio parsing xml, e se dovete servire file completi xml rischiate che l’interprete si arrabbi.
  • <script language=”php”> </script>  è utile se si vuole integrare html e php in maniera da rendere più evidente le parti, ma come ho scritto in questo articolo è opportuno imparare a separare il più possibile le cose.
  • <% %> mi sono sempre domandato perché un programmatore PHP debba usare tag ASP. Forse sono reminiscenze delle prime versioni PHP, di quando era ancora un ragazzino che aveva paura dei grandi colossi, e così si sentiva meno reietto.. Insomma tag che inducono alla follia.
  • <?php ?> è un po’ più elegante e chiaro degli altri ma in alcuni casi questo potrebbe risultare prolisso. Si pensi a un sistema di template PHP come quello di drupal o dello zend framework in cui i segna posti sono variabili PHP, come nel seguente esempio inserire tutte le volte un segnaposto  può diventare fastidioso e anche difficile da leggere:

Per ovviare a questo problema sono stati introdotti i PHP echo short tags: <?= ?> e <%= %>. 

L’esempio di sopra diventa dunque molto più leggibile:

Come si legge dalla documentazione: fino al PHP 5.4 non compreso <?= ?> e <%= %> sono rispettivamente membri delle  famiglie short tags e aps tag. E quindi si attivano insieme ai tag di apertura e chiusura. A partire da PHP 5.4 però viene considerato indipendente <?= ?> e può essere usato liberamente.

Come la penso sui tag

Io credo che gli standard elementari per la scrittura del codice (che trovate qui) siano corretti. Ma aggiungo: se siete sicuri che il codice girerà solo per voi, sarà proprietario, non dovrà essere condiviso con altre macchine allora usate tranquillamente tutti i tipi di tag che volete. Se avete intenzione di partecipare a progetti open source, o di ridistribuire il vostro codice, sappiate che dovete muovervi su standard comuni che vi permettano di non avere problemi tra una macchina e l’altra.

E in chiusura: i tag di chiusura

Prima di chiudere però, vorrei introdurre un altro aspetto che riguarda i tag. La chiusura. Se escludiamo i template, il buon programmatore PHP non ha bisogno del tag di chiusura. Perchè? In un progetto complesso, che usa un sistema di template il tag di chiusura non serve, anzi è deleterio. Cosa succederebbe ad esempio se il vostro loader delle classi si trovasse a fare un require() di un file di classe che contiene una chiusura del PHP e successivamente uno spazio? Potreste avviare l’output della pagina prima di mandare gli header HTTP, oppure se siete (s)fortunati ritrovarvi uno spazio dove non volevate. E a quel punto vi toccherebbe cercare in tutti i file dove cavolo è quello spazio, perdendo tempo e risorse. Separare il codice PHP dall’HTML ci costringe a scrivere codice migliore, e togliendo il tag di chiusura ?> da uno script avremo un file PHP che in nessun modo potrà contenere HTML o caratteri sparsi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *