Includere files
Quando si lavora con piccolissimi progetti, quali i files di esempio di questa guida, è possibile scrivere tutto il codice sorgente in un unico files. Se il progetto è più vasto non è pensabile scrivere centinaia di migliaia di righe di codice in un unico file poiché la velocità di esecuzione sarebbe di certo lenta.
PHP permette di includere dei files con quattro istruzioni:
Diciamo da subito che tutte e quattro le istruzioni servono più o meno alla stessa cosa e che, salvo in particolari casi, si equivalgono. Il programmatore PHP saprà sceglierle in base alle proprie esigenze e, anche in questo caso, PHP si mostra come uno strumento molto versatile per la creazione di siti web dinamici.
Il path del file da includere
Per chiedere a PHP di includere un file, qualsiasi sia l'istruzione usata, è necessario indicare il file con un path corretto. Se il file si trova nella stessa directory dello script allora non necessario includere il path ma se dovesse trovarsi in directory differenti si possono usare i path relativi od i path assoluti.
Nei prossimi esempi esamineremo la situazione nella quale avremo lo script in c:\xampp\htdocs e vogliamo includere un file presente in c:\xampp\htdocs\includes\file_inc.php.
Inclusione con path relativi
Se volessimo includere il file del nostro esempio con un path relativo questo sarà includes/file_inc.php
Inclusione con path assoluti
Se volessimo includere il file con un path assoluto questo sarà c:\xampp\htdocs\includes\file_inc.php. Ovviamente è sconsigliato di mettere il path così com'è perché quando il sito verrà trasferito da locale a remoto, ovvero quando lo si sposta sul server, verrà meno quell'indirizzo. Per cui si potrebbe creare un semplice file di configurazione dove in una variabile, ad esempio $conf['path_assoluto'], si memorizza il path (c:\\xampp\\htdocs) e per includere un file si utilizza proprio questa variabile: $conf['path_assoluto'] . '\\includes\\includes.php'. Da notare che nei sistemi windows, quando si gestiscono i path, è necessario usare sempre i doppi slash.
Include
Mediante l'istruzione include() si chiede a PHP di cercare ed includere un file. Supponiamo di avere il file file_incluso.php
echo 'Ciao mondo!';
ed un file test.php che lo richiama:
<?php
include ('file_incluso.php'); // Restituisce "Ciao mondo"
?>
Quando il file test.php viene richiamato include il file file_incluso.php nel cui interno c'è l'echo che restituisce "Ciao mondo".
Se il file da includere non esiste allora la funzione include genera un warning ma l'interpretazione dello script prosegue.
Include_once
L'istruzione include_once() è del tutto simile ad include ma tiene conto se un determinato file è stato incluso oppure no. Se è stato già incluso l'istruzione viene ignorata. Continuando l'esempio di prima:
include_once ('file_incluso.php'); // Restituisce "Ciao mondo" include_once ('file_incluso.php'); // L'istruzione viene ignorata
Require
L'istruzione require serve ad includere un file ma, a differeza di quanto avviene con include, se questo nonè disponibile viene sollevato un errore di tipo fatal e l'esecuzione non prosegue. Per questo motivo require viene utilizzato quando c'è una reale necessità del file da includere.
<?php
require('file_esistente.php'); // Include file_esistente.php
require('file_non_esistente.php'); // Se il file non esiste solleva un errore di tipo fatal
?>
Require_once
L'istruzione require_once() al pari di include_once tenta di includere un file ma soltanto se lo stesso file non è stato già incluso.
Sicurezza dei files inclusi
PHP processa i files inclusi che, per questo motivo, non dovrebbero essere visibili dall'esterno. Per evitare che un utente con cattive intenzioni possa scoprire parte del nostro codice ed analizzarlo per condurre attacchi informatici, è necessario fare in modo che i files di inclusione terminino sempre con .php.