PHP автозагрузка ловит новое исключение

У меня есть следующий код для автоматического включения моих классов:

spl_autoload_register(function($class) {
   require $class . '.php';
});

Затем у меня есть сторонний класс (в пространстве имен помощников) со следующей строкой:

throw new Exception('...');

Проблема в том, что функция автозагрузки пыталась найти файл с именем helpers\Exception.php. Поэтому я изменил свою функцию выше:

spl_autoload_register(function($class) {
    if ($class != 'helpers\Exception') {
        require $class . '.php';
    }
}

Но затем выдает исключение, сказав, что класс helpers \ Exception не найден. Я был бы признателен, если бы кто-нибудь помог мне показать, как я могу заставить его просто отобразить исходное исключение, выброшенное в третьем классе.

2 ответа

Решение

Мне удалось заставить это работать. Я должен был добавить следующее в начало класса:

use Exception;

Другое решение состоит в том, чтобы изменить:

throw new Exception('...');

чтобы:

throw new \Exception('...');

Но это решение требует изменения каждого случая повсюду.

Вам нужно сбежать \ персонаж. Попробуй это: helpers\\Exception

Другие вопросы по тегам