I nostri progetti saranno composti, nella quasi totalità dei casi, da diversi file php contenenti le funzioni e le classi di cui il nostro progetto ha bisogno per funzionare. Distribuire le funzioni – ma soprattutto le classi – su file php diversi è molto utile per poterle gestire, aggiornare e includere in modo molto più semplice. Come facciamo poi ad usare le classi definite in questi file?
PHP mette a disposizione le funzioni include e require, che servono sostanzialmente a includere un file php (e non solo) dentro un altro file.
Se, ad esempio, avessimo scritto una classe per la gestione degli utenti, la potremmo mettere nel file class.utente.php
, mentre le funzioni o classi che si occupano di dialogare con il database nel file class.database.php
.
class.utente.php
<?php $nome="luca"; class Utente { //.. } ?>
class.database.php
<?php class Database { //.. } ?>
Quando andremo a realizzare la pagina pubblica index.php
del nostro progetto web, le classi nei due file ci serviranno, prima di poterle utilizzare. Ricordiamo che a loro volta class.utente.php o class.database.php potrebbero includere altri file, che saranno automaticamente inclusi a catena. Nella pagina index.php
dovremmo creare una struttura simile a questa:
index.php
<?php include "class.utente.php"; include "class.database.php"; echo $nome; //Questa è definita in class.utente.php $persona=new Utente; //Anche questa $db=new Database; //Questa è definita in class.database.php ?>
I due file vengono totalmente inclusi, e tutto il loro codice resta disponibile in questa pagina. Le funzioni include
e require
hanno usa sola differenza: nel caso di require
, se il file non viene trovato, l’esecuzione viene interrotta e viene generato un errore fatale. Con include
invece PHP tenta di continuare ad eseguire il resto del codice.
include_once e require_once
Analogamente a include
e require
, esistono due funzioni gemelle, include_once
e require_once
che vi consiglio vivamente di usare. La piccola ma fondamentale differenza è che queste due funzioni controllano che i file non siano stati già inclusi. Può sembrarvi banale, ma in grandi progetti, in cui ci sono file che includono a loro volta altri file, ciò può essere fondamentale per non generare errori.