W3docs

die()

La funzione die() in PHP stampa un messaggio e termina l'esecuzione dello script corrente. È equivalente alla funzione exit().

Cosa fa la funzione die()

La funzione die() interrompe lo script PHP esattamente nel punto in cui viene chiamata. Nulla dopo di essa viene eseguito — nessuna istruzione successiva, nessun output ulteriore, nessun ciclo rimanente. Facoltativamente, stampa un messaggio (o restituisce un codice di stato) nel momento in cui si interrompe.

die() è un alias di exit(): le due sono intercambiabili byte per byte, accettano lo stesso argomento e si comportano in modo identico. PHP mantiene entrambi i nomi perché die si legge in modo naturale nel codice "stop on error" (... or die(...)) mentre exit si legge in modo naturale quando si vuole semplicemente terminare uno script. Usa quello che rende più chiaro il codice circostante; questa pagina usa die() ovunque.

Sintassi

die(string $message = "")
die(int $status = 0)

die() accetta un argomento facoltativo, e ciò che si passa cambia il suo comportamento:

  • Una string — PHP stampa quella string, poi termina. Questo è il caso più comune.
  • Un intero — PHP termina con quel valore come stato di uscita e non stampa nulla. 0 significa successo; 1254 segnalano un errore alla shell. Questo è rilevante solo per gli script da riga di comando (php script.php), dove un altro programma legge $? per sapere se lo script è riuscito.
  • Niente — lo script termina semplicemente, senza output e con uno stato di uscita di 0.

die() è un costrutto del linguaggio, non una funzione normale, quindi le parentesi sono facoltative (die; è valido). Includerle mantiene il codice coerente con le normali chiamate di funzione.

Interrompere uno Script in caso di Condizione Fallita

L'utilizzo più frequente di die() è uscire immediatamente quando qualcosa va storto, in modo che il resto dello script non venga mai eseguito con dati errati:

php— editable, runs on the server

Poiché $name non è "Jane", il corpo dell'if viene eseguito, die() stampa Access denied!, e lo script termina immediatamente — la riga echo non viene mai raggiunta. Se $name fosse "Jane", die() verrebbe saltato e lo script stamperebbe invece Welcome, Jane!.

L'Idioma "or die()"

die() viene spesso concatenato a un'espressione con or. PHP valuta prima il lato sinistro; solo se è falsy (come false o null) procede ed esegue die(). Questo è il modo classico per proteggere un'operazione che può fallire:

<?php

$file = fopen("missing-config.txt", "r") or die("Could not open the config file.");

echo "File opened successfully.";

Se fopen() ha successo restituisce un file handle (truthy), quindi or die(...) non viene mai raggiunto. Se il file è assente, fopen() restituisce false, die() viene eseguito e lo script si interrompe prima dell'echo.

Questo idioma è conciso, ma nel codice moderno è preferibile una gestione degli errori reale — lanciare un'eccezione o registrare tramite error_log() — in modo che i fallimenti possano essere intercettati e segnalati invece di interrompere bruscamente la richiesta. Vedi trigger_error() e error reporting per alternative più pulite.

Stato di Uscita per Script da Riga di Comando

Quando si esegue PHP dal terminale, lo stato di uscita comunica alla shell chiamante o alla pipeline CI se lo script ha funzionato:

<?php

$ok = false;

if (!$ok) {
  fwrite(STDERR, "Job failed\n"); // write the message yourself...
  die(1);                         // ...then exit with a non-zero status
}

die(0); // success

Passare un intero a die() imposta lo stato ma non stampa nulla, quindi scrivi tu stesso qualsiasi messaggio leggibile dall'utente (qui su STDERR) prima di uscire. Uno script circostante può poi controllare $? e reagire all'1.

Avvertenze

  • die() non salta nessuna pulizia registrata con register_shutdown_function() — i callback di shutdown e i distruttori di oggetti vengono comunque eseguiti. Ma il codice scritto dopo la chiamata die() non viene mai eseguito.
  • In una richiesta web, die() termina l'intera risposta. L'output già inviato al browser rimane; tutto ciò che è in coda dopo la chiamata viene scartato. Evitalo all'interno di funzioni destinate ad essere riutilizzabili — restituisci un valore o lancia un'eccezione.
  • Un argomento intero non stampa nulla. die(1) non mostra 1; se vuoi che l'utente veda un messaggio, passa una string o stampalo prima di chiamare die().
  • Preferisci le eccezioni nel codice applicativo. die() non può essere intercettato, testato facilmente o recuperato. Riservalo per script di primo livello e diagnosi rapide.

Conclusione

die() (e il suo gemello exit()) termina uno script PHP sul posto, stampando facoltativamente un messaggio o impostando uno stato di uscita. Eccelle nelle guardie veloci negli script standalone e da riga di comando, ma per la logica dell'applicazione in produzione, affidati alle eccezioni e alla corretta gestione degli errori in modo che i fallimenti rimangano intercettabili. Per approfondire la scrittura e la strutturazione del codice che la chiama, vedi funzioni PHP.

Pratica

Pratica
Qual è la funzione di 'die()' in PHP?
Qual è la funzione di 'die()' in PHP?
Was this page helpful?