Originariamente inviato da oly1982
Sto studiando e ho anche io questo dubbio... ora provo ad esprimere quello che ho capito (
ma di cui nn sono per nulla convinto!!! )... aspettanto che gli esperti mi chiarifichino le idee anche a me.
include, require, die, exit, define, echo, etc. etc. sono dei costrutti (non delle funzioni ... come indicato sulla guida di html.it!!)
infatti non si può scrivere:
$result = include("file.php");
in pratica
i costrutti non danno un output ma eseguono un'azione (un comando elementare)... per tanto il costrutto include non darà alcun risultato... nemmeno un risultato boleanno (TRUE/FALSE)!
Specificatamente include se trove il file lo include... altrimenti darà un warning (NON FALSE!!)
L'utilizzo del costrutto die/exit scritto nella sintassi funzione() or die (); determina che qualora la funzione() darà come risultate FALSE si ha l'interruzione del flusso dello script...
ma include non è una funzione ovvero non dà un risultato boleano
bravo, l'approccio è giusto!
studiare e confrontarsi con gli altri
include, come descritto anche nella documentazione ufficiale, produce SEMPRE un risultato, che può dipendere da un return finale nel file incluso o sull' effettiva buona riuscito dell' inclusione.
riportando l'esempio ufficiale
Codice PHP:
return.php
<?php
$var = 'PHP';
return $var;
?>
noreturn.php
<?php
$var = 'PHP';
?>
testreturns.php
<?php
$foo = include 'return.php';
echo $foo; // prints 'PHP'
$bar = include 'noreturn.php';
echo $bar; // prints 1
?>
che è molto più chiaro delle mie parole aggiungerei anche che è possibile effettuare u n controllo di questo tipo :
Codice PHP:
<?php
if(!@include('geronimo.php'))
die('file non trovato!!');
?>
in sintesi: la @ evita qualsiasi tipo di errore in output (in questo caso il warning sollevato dall' inesistenza del file geronimo.php, e l'if controlla quindi se l'inclusione mi restituisce TRUE o FALSE (TRUE=file regolarmente incluso e FALSE = inclusione fallita)
QUESTO OVVIAMENTE SE GERONIMO NON HA NESSUN RETURN, VICEVERSA OTTERREI LA VARIABILE RESTITUITA E CONTROLLEREI A QUESTO PUNTO IL SUO VALORE, NON L'INCLUSIONE DEL FILE