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
exitdupă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.