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

Как продолжить выполнение php кода после Fatal Error?

Я создаю объект для определение параметров класса
$reflector = new \ReflectionClass($classname);
Все замечательно если класс правильный. Однако если такого класса нет (или нет какого-то родительского класса), то программа вылетает по Fatal Error. Типичный пример
Fatal error: Uncaught Error: Class "PHPUnit\Framework\TestCase" not found in vendor\twig\twig\src\Test\IntegrationTestCase.php:30


Можно как-то обойти данную ошибку и продолжить выполнение дальше?

Пока всё что придумал, это запускать новый процесс и в нём проводить проверку. Если Fatal Error, то в своём процессе ничего не делать. Но может есть более стандартный способ?

p.s.работать это будет в консоли. Версия php 8
  • Вопрос задан
  • 133 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
shasoftX, добавь автозагрузчик который в случае отсутствия класса выполняет `class_alias(Dummy::class, $className)`, но тогда смысла нет смысла в рефлексии.
Ответ написан
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Проверить наличие класса?

if (class_exists($classname))
  $reflector = new \ReflectionClass($classname);
Ответ написан
@shasoftX Автор вопроса
Всем большое спасибо. Вот такой код вроде отлавливает все ошибки. По крайней мере на моем примере всё отловило.
try {
    try {
        // Создать рефлектор класса
        $reflector = new \ReflectionClass($classname);
        //...
    } catch (Exception $e) {
        s_dump('Exception', $e->getMessage());
    }
} catch (Error $e) {
    s_dump('Error',$e->getMessage());
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы