In questa puntata introduciamo due costrutti del linguaggio PHP che ci
consentono di includere (ed eseguire) nei nostri script dei file esterni. Tali
file esterni potranno essere sia dei semplici frammenti di codice HTML sia degli
script PHP: nel primo caso avremo una situazione simile all’uso delle
popolarissime SSI (Server-Side Includes); nel secondo, invece, saremo in grado
di condividere codice PHP tra più script.
Vediamo subito, allora, quali sono e come si usano i costrutti di cui stiamo
parlando, e cioè require e include . La loro sintassi è mostrata
nell’esempio seguente.
// Questa istruzione include ed esegue il file
// 'libreria.php3' contenuto nella directory corrente
require "libreria.php3";
// Usando 'include' avrei scritto
include "libreria.php3";
Quello che fanno require ed include è semplicemente leggere il
file specificato dall’argomento (si noti che non è obbligatorio utilizzare le
parentesi tonde), considerandolo parte integrante dello script PHP. Di
conseguenza se il file incluso ("libreria.php3" nell’esempio) contiene
istruzioni PHP, queste verranno regolarmente eseguite.
E’ importante osservare, comunque, che nel momento in cui PHP inizia ad
analizzare il file incluso l’interprete si pone in "modalità HTML",
per cui eventuali frammenti di codice PHP, per essere correttamente riconosciuti
ed eseguiti, dovranno essere racchiusi dai consueti demarcatori (si veda la
prima lezione del corso). Terminata l’analisi del file esterno, si torna in
modalità PHP e si continua l’elaborazione dello script principale.
Nella realizzazione di script PHP i costrutti require ed include
vengono spesso utilizzati indifferentemente; d’altra parte, nella maggior parte
dei casi essi sono perfettamente equivalenti ed intercambiabili. Esistono,
tuttavia, delle differenze di cui occorre essere consapevoli per evitare brutte
sorprese. Per l’approfondimento di questo argomento si rimanda ai link in fondo
all’articolo.
Vediamo adesso un esempio molto semplice.
Supponiamo di voler realizzare un sito in cui tutte le pagine devono
contenere la classica barra di navigazione con i link alle varie sezioni del
sito stesso. Naturalmente non è ipotizzabile pensare di inserire manualmente un
appropriato frammento di HTML (magari con il "copia e incolla") in
tutte le pagine: la manutenzione diventerebbe presto ingestibile.
Adottiamo allora un sistema diverso, per il quale ricorreremo a PHP. Per
prima cosa isoliamo il frammento di HTML corrispondente alla barra di
navigazione e lo salviamo in un file che chiameremo intestazione.html .
Ecco un esempio di come potrebbe essere un file del genere:
<!-- file intestazione.html === INIZIO -->
<body color="black" bgcolor="white">
<a href="index.php3">Home
page</a> |
<a href="pagina2.php3">Pagina 2</a> |
<hr size="1">
<!-- file intestazione.html === FINE -->
Si noti che abbiamo inserito nel frammento anche il tag BODY con
l’impostazione dei colori della pagina; in questo modo, tutte le pagine
utilizzeranno lo stesso insieme di colori per il testo, lo sfondo, etc.
Realizziamo adesso le varie pagine del sito. Ogni pagina sarà uno script PHP
piuttosto che una pagina HTML statica, per cui dovremo utilizzare una estensione
appropriata per il nome del file, di modo che il web server possa riconoscerla e
farla eseguire dal processore PHP. Nel nostro esempio utilizzeremo l’estensione
più diffusa e cioè .php3 .
Per comporre le pagine possiamo utilizzare i nostri strumenti di authoring
preferiti; una volta completata una pagina andremo ad inserire il codice PHP
necessario per includere il file con la barra di navigazione, come mostrato
dall’esempio seguente.
<!-- file index.php3 -->
<html>
<head>
<title>Pagina che include un file esterno</title>
</head>
<? require "intestazione.html" ?>
<h1>Pagina che include un file esterno</h1>
(...Contenuto della pagina...)
</body>
</html>
Si noti che nella pagina index.php3 è stato rimosso il tag BODY
in quanto presente nella barra di navigazione inclusa. In tutte le pagine PHP
costruite in questo modo, l’istruzione
<? require "intestazione.html" ?>
verrà rimpiazzata dinamicamente dal contenuto del file intestazione.html .
Qualunque modifica apportata a tale file verrà immediatamente riflessa in tutte
le pagine del sito che la includono, rendendone così molto semplice la
manutenzione.
Nella prossima puntata vedremo in dettaglio la realizzazione di una barra di
navigazione "intelligente" per il nostro sito.
Luca Balzerani , studente di
Informatica, è fondatore e presidente di LatoServer.it ,
sito dedicato alla programmazione server-side ed al backend in generale.