Risposte:
Non c'è differenza: sono uguali.
Manuale PHP per exit
:
Nota: questo costrutto linguistico è equivalente a
die()
.
Manuale PHP per die
:
Questo costrutto linguistico è equivalente a
exit()
.
die
di soste per errori e exit
per tutti gli altri scenari. Sembra che scorra meglio quando si legge il codice.
die
è molto più veloce da scrivere di exit
... Sto iniziando a usare exit
perché è più leggibile per i programmatori non PHP, ma die
è solo più veloce da scrivere quando ci si trova una fretta. Inoltre, per come scrivo, non devo cambiare la posizione delle mani per scrivere die
.
La differenza tra die()
e exit()
in PHP è la loro origine .
exit()
è da exit()
in C .die()
è da die
in Perl .die()
e exit()
sono funzioni equivalenti.
Manuale PHP per die
:
Questo costrutto linguistico è equivalente a
exit()
.
Manuale PHP per exit
:
Nota: questo costrutto linguistico è equivalente a
die()
.
Manuale PHP per elenco di alias di funzioni :
die()
e exit()
sono diversi in altre lingue ma in PHP sono identici.
Da l' ennesimo rant PHP :
... Come programmatore C e Perl, ero pronto a rispondere, "Why, exit () salva il programma con uno stato di uscita numerico, mentre die () stampa il messaggio di errore su stderr ed esce con lo stato EXIT_FAILURE. " Ma poi mi sono ricordato che siamo nella terra della sintassi disordinata di PHP.
In PHP, exit () e die () sono identici.
I progettisti ovviamente hanno pensato "Hmm, prendiamo in prestito exit () da C. E probabilmente alla gente di Perl piacerà se prendiamo die () come lo è anche di Perl . Oops! Ora abbiamo due funzioni di uscita! Facciamo in modo che entrambi può prendere una stringa o un numero intero come argomento e renderli identici! "
Il risultato finale è che ciò non ha reso le cose "più facili", solo più confuse. I programmatori C e Perl continueranno a usare exit () per lanciare solo un valore di uscita intero e die () per lanciare un messaggio di errore e uscire con un errore. I neofiti e le persone con PHP come prima lingua probabilmente si chiederanno "umm, due funzioni di uscita, quale dovrei usare?" Il manuale non spiega perché c'è exit () e die ().
In generale, PHP ha molta ridondanza strana come questa: cerca di essere amichevole con persone che provengono da contesti linguistici diversi, ma mentre lo fa, crea ridondanza confusa.
exit()
non chiude la connessione mentre lo die()
fa, sembra rilevante.
Come affermato in precedenza, questi due comandi producono lo stesso token parser.
MA
C'è una piccola differenza, ed è quanto tempo impiega il parser a restituire il token.
Non ho studiato il parser PHP, ma se è un lungo elenco di funzioni che iniziano con "d" e un elenco più breve che inizia con "e", allora deve esserci una penalità di tempo che cerca il nome della funzione per le funzioni che iniziano con " e". E potrebbero esserci altre differenze dovute al modo in cui viene controllato l'intero nome della funzione.
Dubito che sarà misurabile a meno che tu non abbia un ambiente "perfetto" dedicato all'analisi di PHP e molte richieste con parametri diversi. Ma deve esserci una differenza, dopo tutto, PHP è un linguaggio interpretato.
Manuale PHP su die :
die - Equivalente per uscire
Puoi anche fare die;
allo stesso modo di exit;
- con o senza parentesi.
L'unico vantaggio di scegliere die()
oltre exit()
, potrebbe essere il tempo che dedichi a scrivere una lettera in più ;-)
php -a
) die;
, die();
, exit;
e exit();
non hanno alcun effetto, mentre exit
(senza virgola) esce modalità interattiva.
Come tutte le altre risposte corrette dicono, die
e exit
sono identici / alias.
Sebbene io abbia una convenzione personale secondo cui quando voglio terminare l'esecuzione di uno script quando è previsto e desiderato, lo uso exit;
. E quando devo terminare l'esecuzione a causa di alcuni problemi (non riesco a collegarmi a db, non riesco a scrivere su file ecc.), Uso die("Something went wrong.");
"uccidere" lo script.
Quando uso exit:
header( "Location: http://www.example.com/" ); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit; // I would like to end now.
Quando uso die:
$data = file_get_contents( "file.txt" );
if( $data === false ) {
die( "Failure." ); // I don't want to end, but I can't continue. Die, script! Die!
}
do_something_important( $data );
In questo modo, quando vedo exit
ad un certo punto del mio codice, so che a questo punto voglio uscire perché la logica finisce qui. Quando vedo die
, so che mi piacerebbe continuare l'esecuzione, ma non posso o non dovrei a causa di un errore nell'esecuzione precedente.
Naturalmente questo funziona solo quando si lavora su un progetto da solo. Quando c'è più gente nessuno potrà impedire loro di usare die
o exit
dove non si adatta alle mie convenzioni ...
Ecco qualcosa di piuttosto interessante. Sebbene exit()
e die()
siano equivalenti, die()
chiude la connessione. exit()
non chiude la connessione.
die()
:
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
exit()
:
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
risultati:
exit()
:
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
die()
:
HTTP/1.1 304 Not Modified
Connection: close
In caso di necessità, devi tenerne conto per il tuo progetto.
exit
e die
funzionano allo stesso modo, entrambi chiudono la connessione.
Dal punto di vista funzionale, sono identici ma li utilizzo nei seguenti scenari per rendere leggibile il codice:
Usa die () quando c'è un errore e devi fermare l'esecuzione.
per esempio
die( 'Oops! Something went wrong' );
Usa exit () quando non c'è un errore e devi interrompere l'esecuzione.
per esempio
exit( 'Request has been processed successfully!' );
Questa pagina dice che die
è un alleato di exit
, quindi sono identici. Ma spiega anche che:
ci sono funzioni che hanno cambiato i nomi a causa di una pulizia dell'API o per qualche altro motivo e i vecchi nomi sono mantenuti solo come alias per la compatibilità con le versioni precedenti. Di solito è una cattiva idea usare questo tipo di alias, poiché potrebbero essere legati all'obsolescenza o alla ridenominazione, il che porterà a script non portabili.
Quindi, chiamami paranoico, ma potrebbe non esserci die
ing in futuro.
is_int()
e is_integer()
sono ugualmente buoni per esempio. Guardando la php-src
cronologia dei commit su GitHub, il die()
costrutto è stato in PHP almeno dal 1999 quando è stato convertito in un repository SVN, e probabilmente per tutto il tempo in cui il linguaggio è esistito. Sembra assurdo immaginare che sarà mai deprecato.
exit
in futuro. O potrebbe non esserci die
in futuro"
Questo output di https://3v4l.org dimostra che die e exit sono funzionalmente identici.
Sono essenzialmente gli stessi, sebbene questo articolo suggerisca diversamente.
Funzionalmente, sono identici. Quindi scegliere quale utilizzare è una preferenza totalmente personale. Semanticamente in inglese, sono diversi. Die sembra negativo. Quando ho una funzione che restituisce i dati JSON al client e termina il programma, può essere terribile se chiamo questa funzione jsonDie (), ed è più appropriato chiamarla jsonExit (). Per questo motivo, uso sempre exit invece di die.
Da quello che so quando guardo questa domanda qui
Ha detto che "in PHP, c'è una differenza netta nell'output Header. Negli esempi seguenti ho scelto di usare un'intestazione diversa, ma per mostrare la differenza tra exit () e die () che non ha importanza", e testato (personalmente)
In w3schools Quiz: le funzioni die () e exit () fanno esattamente la stessa cosa? la mia risposta è falsa. Questa è una risposta errata. La risposta giusta è vera.
Qualcosa che ho notato almeno nei miei script è che exit () interromperà lo script attualmente in esecuzione e restituirà il controllo a qualsiasi script chiamante, mentre die interromperà php nelle sue tracce. Direi che è una differenza abbastanza grande?
Il risultato della funzione exit () e die () è sempre lo stesso. Ma come spiegato nella pagina del manuale alias ( http://php.net/manual/en/aliases.php ), dice che la funzione die () chiama la funzione exit. Penso che sia hard coded come di seguito:
function die($msg){
exit($msg);
}
Questo non è un problema di prestazioni per progetti di piccole, medie e grandi dimensioni, ma se il progetto ha miliardi moltiplicare miliardi moltiplicare miliardi di processi, ciò accade in uno stato di ottimizzazione delle prestazioni molto importante.
Ma la maggior parte delle persone non pensa che questo sia un problema, perché se hai molti processi, devi pensare a più problemi che se una funzione è master o alias.
Ma la risposta esatta è quella; la funzione principale è sempre più veloce dell'alias.
Finalmente; La pagina del manuale di Alias dice che non puoi più usare die. È solo un alias ed è deprecato.
Di solito è una cattiva idea usare questo tipo di alias, poiché potrebbero essere legati all'obsolescenza o alla ridenominazione, il che porterà a script non portabili. Questo elenco viene fornito per aiutare coloro che desiderano aggiornare i loro vecchi script alla sintassi più recente.
die()
non è una funzione separata. È solo un altro nome di exit()
. Questa risposta contiene dichiarazioni errate sugli alias e sulle loro prestazioni.
Suonano allo stesso modo, tuttavia, exit () consente anche di impostare il codice di uscita dello script PHP.
Di solito non ti serve davvero, ma quando scrivi gli script PHP della console, potresti voler verificare, ad esempio, con Bash se lo script ha completato tutto nel modo giusto.
Quindi puoi usare exit () e prenderlo in seguito. Die () tuttavia non lo supporta.
Die () esiste sempre con il codice 0. Quindi essenzialmente un comando die () fa quanto segue:
<?php
echo "I am going to die";
exit(0);
?>
Che è lo stesso di:
<?php
die("I am going to die");
?>
die
e exit
sono identici (producono lo stesso token parser ( T_EXIT
) e vengono eseguiti dallo stesso codice). Se il parametro è un numero intero, restituirà quel codice alla shell. In caso contrario, verrà generato e restituirà 0. Quindi die
e exit
sono letteralmente alias l'uno per l'altro.
so exit() is exit and die() is also exit :)