Ce face trigger_error
trigger_error produce un mesaj care trece prin același sistem ca avertismentele PHP: este afișat sau scris în jurnal după setările serverului și poate fi prins cu set_error_handler. Scriptul continuă după apel.
Nivelurile permise sunt E_USER_NOTICE (implicit), E_USER_WARNING și E_USER_DEPRECATED. Ultimul este folosit de biblioteci pentru a anunța că o funcție va dispărea.
Din PHP 8.4, nivelul E_USER_ERROR este depreciat. Pentru o eroare care trebuie să oprească execuția, aruncă o excepție.
Parametri
| Parametru | Descriere |
|---|---|
$message |
Textul mesajului. |
$error_level |
Opțional. E_USER_NOTICE, E_USER_WARNING sau E_USER_DEPRECATED. |
Ce returnează
Întotdeauna true.
Exemple
Exemplul 1: Anunțarea unei funcții învechite
Handler-ul afișează mesajul în pagină, ca să vedem ce primește. Fără el, mesajul ar apărea în jurnalul de erori.
<?php
set_error_handler(function (int $nivel, string $mesaj): bool {
$nume = [E_USER_NOTICE => "notificare", E_USER_WARNING => "avertisment", E_USER_DEPRECATED => "învechit"];
echo "(" . $nume[$nivel] . ") $mesaj\n";
return true;
});
function pretVechi(float $pret): float
{
trigger_error("pretVechi() este învechită, folosește pretCuTva()", E_USER_DEPRECATED);
return $pret * 1.19;
}
echo pretVechi(100) . "\n";
trigger_error("Imaginea produsului lipsește", E_USER_WARNING);
echo "Scriptul continuă.";
Rezultat
(învechit) pretVechi() este învechită, folosește pretCuTva()
119
(avertisment) Imaginea produsului lipsește
Scriptul continuă.
Greșeli frecvente
- Folosești
trigger_error(..., E_USER_ERROR)ca să oprești scriptul. Din PHP 8.4 primeștiDeprecated. Aruncă o excepție. - Folosești
trigger_errorpentru erori pe care apelantul trebuie să le trateze. Mesajul nu poate fi prins cutry/catch; pentru asta aruncă o excepție.
Comenzi înrudite
set_error_handler: Înlocuiește tratarea standard a avertismentelor și notificărilor PHP cu o funcție scrisă de tine.error_reporting: Setează ce tipuri de erori raportează PHP (sau doar citește setarea curentă).error_log: Scrie un mesaj în jurnalul de erori al serverului sau într-un fișier ales de tine.Exception: Clasa de bază pentru excepții. Extinde-o ca să creezi tipuri proprii de erori pentru aplicația ta.