Nella lezione precedente abbiamo accennato a come interagire con un database MySQL attraverso i nostri script PHP. Come abbiamo visto รจ necessario specificare โ affinchรจ la connessione al database funzioni correttamente โ le credenziali di accesso al MySQL. Qualora la nostra applicazione sia composta di piรน file sarร , ovviamente, necessario aver cura di ripetere le nostre credenziali in ogni singolo script.
Una simile prassi, in realtร , รจ decisamente sconsigliabile in quanto sarebbe un inutile spreco di tempo ripetere piรน volte lo stesso codice, ciรฒ aumenterebbe il rischio di errori e renderebbe, tra lโaltro, poco agevole ogni operazione di modifica o aggiornamento (si pensi, ad esempio, ad unโapplicazione composta da 20 files: qualora doveste modificare i dati di accesso al vostro DB dovreste modificare a mano tutti quanti gli script!).
Gestire le inclusioni con PHP
Al fine di far fronte a questa ed altre necessitร analoghe, il linguaggio PHP ci offre alcuni utili comandi per gestire le inclusioni di file: questi sono include e require.
Mediante questi comandi (include e require non sono delle funzioni!), quindi, potremo evitare le ripetizioni di codice scrivendo le istruzioni una sola volta allโinterno di un file che sarร poi incluso allโinterno di tutti gli script che necessitano di quel codice.
Per tornare al nostro esempio di partenza potremmo creare un file "dati-mysql.php" con le credenziali di accesso, la connessione al DBMS e la selezione del DB evitando di ripetere sempre lo stesso codice nei file che lo richiedono:
<?php
$host = "localhost";
$user = "pippo";
$pass = "odiotopolino";
$database = "miodatabase";
// mi connetto al DBMS
$myconn = mysql_connect($host, $user, $pass) or die('Errore...');
//Mi connetto al database
mysql_select_db($database, $myconn) or die('Errore...');
?>
Allโinterno di tutti i singoli file preposti ad operare sul DB sarร sufficiente includere il file appena visto, in questo modo:
include "dati-mysql.php";
oppure con
require "dati-mysql.php";
si noti che sia include che require possono essere utilizzati, indifferentemente, con e senza le parentesi:
// corretto
include("dati-mysql.php");
// corretto
include "dati-mysql.php";
Differenza tra include e require
I due comandi include e require producono il medesimo risultato; lโunica differenza consiste nella gestione di eventuali errori: nel caso il file da includere non si trovato include() genererร un warning mentre require() un fatal error (bloccando, di fatto, lโesecuzione dello script).
Si noti che, affinchรจ lโinclusione vada a buon fine, รจ necessario specificare il percorso corretto del file che si desidera includere (nel nostro esempio il file "dati-mysql.php" si trova nella stessa cartella degli script che lo includono).
Per approfondire lโargomento vi consiglio di leggere queste semplici referenze:
Usare include_once e require_once
Eโ da segnalare lโesistenza di due interessanti varianti, si tratta dei comandi include_once e require_once. La loro fnzione รจ identica a include e require con lโunica differenza che prima di includere il file verificano che questo non sia giร stato precedentemente incluso nella pagina ed, in tal caso, non fanno nulla.