Как поймать "Нет ошибки: конструктор PDO не был вызван" - PullRequest
0 голосов
/ 24 сентября 2019

как я могу поймать следующую ошибку: No error: PDO constructor was not called?

Мой вопрос не как решить ошибку, но как поймать it!

Мне это нужно для среды тестирования PHPUnit.

Я пытался поймать его таким образом, но он просто так не работает.

$pdo = (new \ReflectionClass(\PDO::class))->newInstanceWithoutConstructor();

try
{
    $pdo->query("SELECT * FROM table");
}
catch (ErrorException $exc)
{
    echo $exc->getTraceAsString();
}

точное (ошибочное) сообщение выглядит следующим образом: PDO::query(): SQLSTATE[00000]: No error: PDO constructor was not called, но я не уверен, является ли это даже любым типом перехватываемого PHP.

Я уже проверил методpdo_raise_impl_error() [PHP 7.3.3], который вызывается с упомянутым сообщением об ошибке, но я не достаточно мудр, чтобы предвидеть, какой фактический тип ошибки он вызывает ...

Может кто-нибудь дать совет

1 Ответ

1 голос
/ 24 сентября 2019

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

set_error_handler(function ($level, $message, $file = '', $line = 0)
{
    throw new ErrorException($message, 0, $level, $file, $line);
});

Конечно, это сделает глобальныйобработчик ошибок, но, честно говоря, я считаю, что каждый проект PHP должен иметь такой код.

Или, по крайней мере, вы можете вызвать этот обработчик только временно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...