Ce face error_get_last
error_get_last dă un tablou cu cheile type, message, file și line pentru ultimul avertisment sau ultima eroare, sau null dacă nu a fost niciuna. Funcționează și pentru erorile ascunse cu operatorul @.
Cea mai importantă utilizare este într-o funcție register_shutdown_function: acolo poți afla dacă scriptul s-a oprit din cauza unei erori fatale, pe care set_error_handler nu o poate prinde.
Ce returnează
Un tablou cu detaliile ultimei erori sau null.
Exemple
Exemplul 1: Motivul unui eșec ascuns cu @
<?php
$continut = @file_get_contents("lipsa.txt");
if ($continut === false) {
$eroare = error_get_last();
echo "Tip: " . ($eroare["type"] === E_WARNING ? "E_WARNING" : $eroare["type"]) . "\n";
echo "Mesaj: " . $eroare["message"] . "\n";
echo "Linia: " . $eroare["line"];
}
Rezultat
Tip: E_WARNING
Mesaj: file_get_contents(lipsa.txt): Failed to open stream: No such file or directory
Linia: 2
Exemplul 2: Eroare fatală prinsă la oprire
<?php
ini_set("display_errors", "0");
ini_set("memory_limit", "8M");
register_shutdown_function(function () {
$eroare = error_get_last();
if ($eroare !== null && $eroare["type"] === E_ERROR) {
echo "Scriptul s-a oprit: " . explode(" (", $eroare["message"])[0];
}
});
$date = str_repeat("x", 20 * 1024 * 1024);
Rezultat
Scriptul s-a oprit: Allowed memory size of 8388608 bytes exhausted
Greșeli frecvente
- Citești
error_get_last()mult după operația care te interesează. Între timp, altă eroare poate să o fi înlocuit; citește imediat după operație.
Comenzi înrudite
error_clear_last: Șterge informațiile despre ultima eroare, ca error_get_last să returneze din nou null.register_shutdown_function: Înregistrează o funcție care rulează la sfârșitul scriptului, inclusiv după exit sau după o eroare fatală.set_error_handler: Înlocuiește tratarea standard a avertismentelor și notificărilor PHP cu o funcție scrisă de tine.