Задать вопрос

Как узнать, где был вызван автозагрузчик?

Пользуюсь простейшим скриптом автолоадера, которого мне хватает с головой:

namespace {
    function __autoload($class_addr)
    {
        $classes_root = str_replace(['/', '\\'], DIRECTORY_SEPARATOR, $_SERVER['DOCUMENT_ROOT']).
                DIRECTORY_SEPARATOR.'_classes'.DIRECTORY_SEPARATOR;
        $class_addr = str_replace(['/', '\\'], DIRECTORY_SEPARATOR, $class_addr);
        require_once $classes_root.$class_addr.'.php';
    }
}


В клиенте:

require_once $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'autoload.php';


Всё работает на ура, но есть одна проблемка: когда в каком-то скрипте неверно прописано имя класса или неймспейс, выскакивает например вот такая ошибка:

Warning: require_once(E:\OpenServer\domains\asoft.local\_classes\Configurator.php): failed to open stream: No such file or directory in E:\OpenServer\domains\asoft.local\autoload.php on line 8


Когда классов и скриптов подключено много - бывает крайне сложно найти, какой именно скрипт запросил класс с неправильным именем.
Можно ли как-то сделать, чтобы этот автолоадер показывал, из какого скрипта он дёргается?
  • Вопрос задан
  • 167 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя Mikhail Osher К ответам на вопрос (4)
miraage
@miraage
Старый прогер
Если нужен stacktrace - используйте исключения.
Ответ написан
Комментировать