error_get_last în PHP

Returnează ultima eroare apărută (tip, mesaj, fișier, linie), chiar dacă a fost ascunsă cu @.

Sintaxă
error_get_last(): ?array

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.