2013-11-20 3 views
1

Есть ли способ для функции, зарегистрированной spl_autoload_register, узнать исходный файл/класс/метод, вызывающий его? Я хочу, чтобы иметь возможность выводить полезную ошибку, когда класс не найден, поэтому я знаю, какой исходный файл необходимо обновить. Например:PHP spl_autoload: как определить функцию запроса функции автозагрузки

spl_autoload_register(function($className) 
{ 
    $classFile = 'include/' . $className . '.php'; 
    if (!is_readable($classFile)) 
    { 
     echo 'Could not load ' . $className . ' requested by ' . $source; 
     // how to figure out $source -----------------------------^^ 
     return false; 
    } 

    include $classFile; 
    return false; 
} 

ответ

1

Это то, что stack trace. Он показывает цепочку событий, которые приводят к вашей ошибке (и могут предоставлять такие данные, как класс, номер строки и т. Д.)

0

Попробуйте var dumping debug_backtrace(), чтобы увидеть массив, который он возвращает, и если он может помочь.

spl_autoload_register(function($className) 
{ 
    var_dump(debug_backtrace()); 

    ...