debug_backtrace
funkcja
Zwraca stos wywołań funkcji jako tablicę — każdy element opisuje jedną ramkę: funkcję, plik, linię i argumenty.
debug_backtrace(int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT, int $limit = 0): array
debug_backtrace zwraca tablicę ramek stosu wywołań — od najnowszego wywołania (indeks 0) do najstarszego. Każda ramka to tablica asocjacyjna z kluczami:
| Klucz | Opis |
|---|---|
| function | Nazwa wywoływanej funkcji/metody |
| file | Plik, z którego nastąpiło wywołanie |
| line | Numer linii wywołania |
| class | Klasa (jeśli to metoda) |
| args | Argumenty (tylko gdy DEBUG_BACKTRACE_IGNORE_ARGS nie jest ustawione) |
| object | Obiekt $this (tylko gdy opcja PROVIDE_OBJECT) |
<?php
declare(strict_types=1);
function formatujBlad(): void {
$stos = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
foreach ($stos as $ramka) {
$plik = $ramka['file'] ?? '(brak)';
$linia = $ramka['line'] ?? '?';
$funkcja = $ramka['function'];
echo " $funkcja() — $plik:$linia\n";
}
}
function b(): void { formatujBlad(); }
function a(): void { b(); }
a();
// wynik (kolejność od najnowszego):
// formatujBlad() — /skrypt.php:15
// b() — /skrypt.php:17
// a() — /skrypt.php:18
Parametr $options:
DEBUG_BACKTRACE_PROVIDE_OBJECT(domyślnie) — dołącza obiekty$thisDEBUG_BACKTRACE_IGNORE_ARGS— pomija argumenty (tańsze pamięciowo)
Parametr $limit ogranicza liczbę zwróconych ramek (0 = bez limitu).
debug_backtrace służy wyłącznie do diagnostyki w trakcie developmentu — nie używaj jej w kodzie produkcyjnym, gdzie mogłaby ujawnić wewnętrzną strukturę aplikacji.