exit / die în PHP

Structuri de control PHP 4+ (funcție adevărată: PHP 8.4+)

Oprește imediat scriptul. Poate afișa un mesaj înainte sau poate da un cod de ieșire. die este același lucru.

Sintaxă
exit(string|int $status = 0): never

Ce face exit / die

exit încheie scriptul pe loc: codul de după nu mai rulează. Dacă îi dai un text, textul este afișat înainte de oprire. Dacă îi dai un număr, acesta devine codul de ieșire al programului (important în linia de comandă: 0 înseamnă succes, altceva înseamnă eroare). die este un alias, identic.

Chiar și după exit, PHP rulează funcțiile înregistrate cu register_shutdown_function și destructorii obiectelor. Cel mai des, exit apare după o redirecționare: header("Location: /login"); exit;.

Din PHP 8.4, exit și die sunt funcții adevărate (pot fi folosite, de exemplu, cu argumente cu nume), dar se pot scrie în continuare și fără paranteze.

Parametri

Parametru Descriere
$status Opțional. Un text afișat înainte de oprire sau un cod de ieșire între 0 și 254.

Ce returnează

Nu returnează niciodată (tipul never).

Exemple

Exemplul 1: Oprire cu mesaj

<?php
$utilizatorLogat = false;

echo "Verific accesul...\n";
if (!$utilizatorLogat) {
    exit("Acces interzis. Te rugăm să te autentifici.");
}
echo "Panoul de administrare";

Rezultat

Verific accesul...
Acces interzis. Te rugăm să te autentifici.

Exemplul 2: Ce rulează după exit

<?php
register_shutdown_function(function () {
    echo "\nFuncția de oprire rulează și după exit.";
});

echo "Lucrez...";
die();
echo "Această linie nu apare.";

Rezultat

Lucrez...
Funcția de oprire rulează și după exit.

Exemplul 3: Redirecționare urmată de exit

Fără exit, restul paginii ar rula în continuare și ar putea afișa date protejate, chiar dacă browserul pleacă spre altă adresă.

<?php
if (!isset($_SESSION["utilizator"])) {
    header("Location: /login.php");
    exit;
}

echo "Comenzile tale: ...";

Rezultat în browser

(browserul este trimis la /login.php; din pagina curentă nu se afișează nimic)

Greșeli frecvente

  • Uiți exit după header("Location: ..."). Codul de după continuă să ruleze, inclusiv eventuale ștergeri sau afișări de date.
  • Folosești die("Eroare la baza de date: " . $eroare) pe un site public. Vizitatorii văd detalii tehnice. Scrie eroarea în jurnal și afișează un mesaj general.

Comenzi înrudite

  • return: Oprește funcția și trimite înapoi o valoare către codul care a apelat-o.
  • error_log: Scrie un mesaj în jurnalul de erori al serverului sau într-un fișier ales de tine.
  • set_exception_handler: Setează funcția care rulează când o excepție nu este prinsă de niciun bloc catch.