{ Istruzioni include() e include-once() PHP }

Uguali ma diversi...

Queste due istruzioni, entrabe assolvono alla funzione di, come indica il nome stesso dell'istruzione, includere all'interno di un programma delle operazioni intermedie ad esso. Tali istruzioni sono molto utili per "snellire" i programmi php, quando bisogna ripetere ricorsivamente delle istruzioni su più pagine. Quindi basta compilare una sola volta un file e includerlo tutte le volte che servono le righe di programma inserite in esso, questa "pratica" oltre a semplificare, sicuramente ci aiuta a commettere meno errori in quanto non dovremo riscrivere ogni volta una mole di righe che sicuramente induce a sbagliare... La sintassi è semplicissima

Codice:
<?php
include ("file-da-includere.php");
include_once ("file-da-includere.php");
?>

La sintassi può essere scritta anche senza parentesi indifferentemente.

Codice:
<?php
include "file-da-includere.php";
include_once "file-da-includere.php";
?>

La differenza tra include e include_once che quest'ultimo fa un controllo sulla pagina se in qualche punto è già stato incluso il file e in tal caso non esegue nessuna operazione, bisogna anche considerare che ipiega risorse maggiori in quanto deve eseguire il controllo prima delle eventuali operazioni incluse in esso. Porebbe risultare un pò articolato capire a pieno questo meccanismo, di seguito ho preparato un esempio che vi invito a fare se qualcosa non vi è chiara.
Il ciclo while nell'esempio, immaginiamo che deve ciclare una tabella del nostro database e restituire gli id della tabella, questi andranno a creare dei link. Immaginiamo ad esempio l'indice di un archivio di articoli e ogni link ci manda ad ogni singolo articolo. Il file da includere sarà di questo tipo.
Codice:
<?php
//questo sarà il file da includere nel ciclo while lo chiameremo articoli.php
if($id==10){
	$link="articolo-primo.php";
}
if($id==11){
	$link="articolo-secondo.php";
}
if($id==12){
	$link="articolo-terzo.php";
}
//e così via...
?>

Una volta compilato il file da includere, lo inseriamo nel ciclo while.
Codice:
<?php
while($row=mysql_fetch_array($rs)){
                     $id=$row['id_articoli'];
		 $titolo=$row['titolo'];
		 include("articoli.php");
		 echo "<a href='https://sitiweb.cloud/$link'>$titolo</a>"
            }
/*Ricordiamoci che la variabile $link viene restituita dal file incluso articoli.php
e la variabile $id va a comporre il link all'interno del file incluso*/

In questo caso i link dei titoli vengono correttamente "costruiti" fino alla fine del ciclo while e l'output sarà un risultato similare.
Codice:
<a href="https://sitiweb.cloud/articolo-primo.php">Articolo Primo</a>
<a href="https://sitiweb.cloud/articolo-secondo.php">Articolo Secondo</a>
<a href="https://sitiweb.cloud/articolo-terzo.php">Articolo Terzo</a>
<!-- e via discorrendo -->

Ora per capire a pieno la differenza, proviamo a sostituire l'istruzione include con incude_once in questa maniera.
Codice:
<?php
while($row=mysql_fetch_array($rs)){
                     $id=$row['id_articoli'];
		 $titolo=$row['titolo'];
		 include_once("articoli.php");
		 echo "<a href='https://sitiweb.cloud/$link'>$titolo</a>"
            }
/*Ricordiamoci che la variabile $link viene restituita dal file incluso articoli.php
e la variabile $id va a comporre il link all'interno del file incluso*/
?>

A questo punto ci accorgiamo che qualcosa non va... o meglio, ci accorgiamo che che inlude_once blocca il ciclo while restituendo lo scenario di seguito...
Codice:
<a href="https://sitiweb.cloud/articolo-primo.php">Articolo Primo</a>
<!-- il ciclo while si blocca al primo risultato -->

Questo succede non perchè il while non cicla correttamente, ma perchè come spiegato all'inizio inlude_once ha il compito di controllare se il file articoli.php, sia stato già incluso, nel caso affermativo egli stesso non produce alcuna operazione. Infatti, al "lancio" del ciclo while c'è il primo risultato ma dopo il contollo di inlude_once, il quale riscontra l'iclusione precedente, non esegue più il file articoli.php producendo il blocco del ciclo while. Fate alcune prove per evadere ogni dubbio o scrivete un commento di seguito...

Siti Web

Da 20 anni Filomeni Maurizio si dedica con passione e tenacia al mondo del web, le sue realizzazioni sono sempre all'avanguardia perchè la sua passione divenuta professione è al passo con i tempi e sempre in fase di studio e ricerca. Grazie ai suoi collaboratori riesce a dedicare il maggior tempo alla programmazione back-end rendendo le applicazioni molto precise e sofisticate. Dopo un attento monitoraggio, Siti Web diventa Partner Partnership di Aruba Group S.p.A

Newsletter & Info

Iscriviti alla nostra newsletter per ricevere aggiornamenti e novità, non riceverai mail indesiderate da parte nostra, odiamo lo spam!


Ti Piace Siti Web?