Как отловить ошибку "класс не найден" - PullRequest
1 голос
/ 10 февраля 2012

Я использую spl_autoload_register для загрузки определенных классов, когда они необходимы, но как я могу отловить ошибку, когда класс не найден моим методом автозагрузки?

СейчасЕдинственное решение, которое я вижу, это отобразить симпатичное сообщение об ошибке в моем автозагрузке и остановить приложение, чтобы ошибка не отображалась.

Но я не хочу останавливать приложение.Я хочу продолжить и пропустить создание экземпляра отсутствующего класса, который мне нужен (в моем конкретном случае они не обязательны для продолжения работы приложения)

Ответы [ 2 ]

8 голосов
/ 10 февраля 2012

Используйте class_exists() перед загрузкой и обработайте результат соответствующим образом. Если он существует, создайте экземпляр как обычно. Если этого не произойдет, пропустите экземпляр.

1 голос
/ 10 февраля 2012

Чтобы отключить ошибку, вы можете динамически создавать отсутствующие классы при их вызове, хотя я не рекомендую такой подход.

У меня работал следующий код:

function __autoload($name) {
eval("class {$name} {}");
}

echo 'pass 1';
$a = new a();
echo 'pass 2';
...