2009-02-27 10 views

risposta

29

require richiede, include include.

Secondo il manuale:

require() è identica per includere() tranne in caso di guasto produrrà un errore fatale livello E_ERROR. In altre parole, fermerà lo script mentre include() emette solo un avvertimento (E_WARNING) che consente allo script di continuare.

+0

utilizzare per essere diverso, però :-) – dusoft

+1

Vero, ma la cosa interessante sarebbe essere per capire quando usare l'uno o l'altro. – JDelage

0

Per http://www.alt-php-faq.org/local/78/:

differenza include(), require() sarà sempre leggere nel file di destinazione, anche se la linea è su mai eseguito. Se si desidera includere in modo condizionale un file, utilizzare include(). L'istruzione condizionale non influenzerà il require(). Tuttavia, se la riga su cui si verifica require() non viene eseguita, nessuno dei codici nel file di destinazione verrà eseguito.

+1

L'unica differenza tra include() e require() è quella in caso di errore (ad esempio se il file non può essere trovato), require() emette un errore, mentre include() emette un avviso. – mjs

3

La differenza è questa: include non fallirà se non riesce a trovare la risorsa, richiede volontà. Onestamente, è un po 'sciocco che include affatto esiste, perché se si sta tentando di caricare una risorsa si sta contando sul fatto che sia lì. Se vuoi usare qualcosa, ti consiglio di usare sempre require_once, in questo modo non incappi in collisioni (cioè se un altro script richiede lo stesso file) e il tuo codice funziona sempre come previsto perché sai quali risorse sei incluso ci sono (altrimenti non funziona).

1

Se un file è facoltativo, includerlo. Ad esempio, potresti avere un file 'breaking-news.txt' che viene creato quando ci sono le ultime notizie, ma non esiste quando non ce n'è. Potrebbe essere incluso senza interrompere la sceneggiatura se non ci sono novità.

Se il file è necessario affinché il resto dello script funzioni correttamente, è necessario.

4

Come altri hanno già detto, se "require" non trova il file che sta cercando, l'esecuzione si fermerà. Se include non archivia il file che sta cercando, l'esecuzione continuerà.

In generale, è necessario utilizzare require durante l'importazione di librerie di codice/classe/funzione. Se si tenta di chiamare una funzione, creare un'istanza di una classe, ecc. E le definizioni non sono presenti, le cose brutte si verificheranno. Pertanto, è necessario il codice per includere il file e php e, in caso contrario, si interrompe.

Utilizzare include quando si utilizza PHP per l'output di contenuto o altrimenti si esegue codice che, se non viene eseguito, non distruggerà necessariamente il codice successivo. Il classico esempio di questo è l'implementazione di una vista in un modello/vista/quadro di controllo. Nulla di nuovo dovrebbe essere definito in una vista, né dovrebbe cambiare lo stato dell'applicazione. Pertanto, va bene usare include, perché un errore non infrange altre cose che accadono nell'applicazione.

Una piccola tangente. Esistono molte informazioni contrastanti e informazioni errate in merito alle prestazioni di include vs. require vs. require_once vs. include_once. Esse si comportano in modo radicalmente diverso in diverse situazioni/casi d'uso. Questo è uno di quei posti in cui è davvero necessario confrontare la differenza nella propria applicazione.

+0

Grazie per aver fornito il caso d'uso per includere. Non riuscivo a capire quando usarlo prima. – JDelage

0

In un linguaggio semplice se si utilizza richiede che sia necessario accertarsi che il file sia esistente in quell'epoca mentre non è necessario in caso di inclusione.Ma cerca di assicurarti che il file esista.

-1

Require() e include() sono gli stessi per quanto riguarda la gestione dei guasti . Tuttavia, require() genera un errore irreversibile e non consente di eseguire l'elaborazione della pagina tramite . Ad esempio, includerà lo script per continuare.

+0

sia "include" che "require" sono ** costrutti linguistici **. Non usano la parentesi. – Jimbo

0
Include and require are identical, except upon failure: 

require will produce a fatal error (E_COMPILE_ERROR) and stop the script 
include will only produce a warning (E_WARNING) and the script will continue 

È possibile capire con examle includono ("test.php"); echo "\ nQuesta riga verrà stampata";

uscita: Warning: include (test.php): failed to open stream: No such file or directory in/var/www/........ Questa linea sarà stampata

richiedono ("test.php"); echo "\ nQuesta riga verrà stampata"; Attenzione: require (test.php): impossibile aprire lo stream: Nessun file o directory in/var/www/....

Problemi correlati