Prima di iniziare con gli esempi più interessanti, è necessario comprendere come è strutturato un comune script PHP. Normalmente una semplice pagina PHP con il compito di visualizzare dei dati, avrà un aspetto simile:
<?php
require_once 'include/config.php';
require_once 'library/info.php';
$bands = array('Dark Tranquillity', 'Stratovarius', 'Blind Guardian', 'In Flames', 'Metallica');
?>
<html>
<head>
<title>Prova</title>
</head>
<body>
<h3>I miei gruppi preferiti</h3>
<ul>
<?php
$info = new InfoManager;
foreach($bands as $band_name)
{
$band_info = $info->findInfos($band);
echo "<li>".$band_name;
if(!is_null($band_info))
{
echo ' (<a href="'.$band_info->site.'">'.$band_info->site.'</a>)';
}
echo "</li>";
}
?>
</ul>
</body>
</html>
Premetto che questo, a mio parare, non è uno dei modi migliori per organizzare contenuti complessi o applicazioni alle quali lavoreranno più persone, ma ritengo prematuro trattare il discorso template in questa sede. Vi lascio alla lettura degli articoli presenti su
HTML.it relativi a
smarty ed agli altri template engine.
Tornando a noi il codice, che ovviamente non funzionerà se eseguito sulla vostra macchina causa la mancanza dei file config.php e info.php, si occupa di includere un file di configurazione comune, una libreria e visualizzare una lista di band musicali con eventualmente il loro sito internet tra parentesi. L'inclusione di file esterni è un processo molto importante nella programmazione e viene effettuato utilizzando i costrutti require, include o le loro varianti.
Nel nostro caso abbiamo deciso di salvare dentro include/config.php
alcune variabili di configurazione comuni per tutte le pagine, dentro lib/info.php
la definizione della classe InfoManager e di richiedere l'inclusione di questi file nel momento in cui la nostra pagina fosse richiamata da apache. La differenza tra require ed include è sottile ma molto significativa: con il primo richiediamo obbligatoriamente l'inclusione di un file. Se questi non esiste, PHP genererà un errore fatale e terminerà l'esecuzione. Con il secondo invece richiediamo un file che non riteniamo fondamentale per il corretto funzionamento del sistema. In questo caso PHP restituirà solamente un warning in caso di malfunzionamento e procederà con l'esecuzione dello script. Il suffisso "_once" permette di assicurarsi che il file richiesto sia incluso una sola volta.
Un'altra informazione che mi sento di fornirvi prima di continuare è quella che riguarda la gestione dell'output in PHP. Solitamente è buona norma (nel caso in cui non si utilizzino sistemi di template) costruire all'interno di variabili stringa i blocchi di codice HTML che dovremmo mandare in output, e poi utilizzare una sola istruzione
echo
alla fine del codice. Questo perché le operazioni di output sono molto dispendiose in termini di risorse, e risparmiare sulla chiamate ad
echo
(o agli altri sistemi di output) velocizza l'esecuzione delle pagine.