La fonction debug_backtrace() présente dans le nouveau moteur php permet de faciliter les opérations de debug sur des problématiques d’appels de fonctions et/ou de méthodes.

Intérêts

En fait, cette fonctionnalité est intéressante dès que l’on se pose une question du type ‘mais qui appelle cette fonction ou cette méthode ?’.

Cela peut être d’autant plus pertinent que l’on n’est pas à l’origine du code en question (sic) et/ou que des appels dynamiques de fonctions sont utilisés. Ou bien encore que le code est réellement volumineux et empile un nombre important de couches successives.

Principe

Le principe est simplissime, l’on fait appel à la fonction debug_backtrace dans la fonction ou la méthode qui pose potentiellement problème. Et l’on obtient un tableau contenant le nom de la fonction ou méthode d’où provient l’appel, avec en prime le nom du fichier et la ligne précise.

Exemple basique

Soit le code suivant,

<?php
function foo() {
    print_r(debug_backtrace()); // Affiche la pile d’appel 
}

function call_foo(){
    foo();
}

call_foo();
?>
Il va produire en sortie,

Array
(
    [0] => Array
        (
            [function] => foo
            [file] => /home/foo/test.php
            [line] => 8
        )

    [1] => Array
        (
            [function] => call_foo
            [file] => /home/foo/test.php
            [line] => 11
        )

)
En effet debug_backtrace, ne se contente pas de renvoyer les informations sur la fonctions immédiatement appelante, mais permet de tracer l’ensemble de la pile d’appel.

Consulter le lien