Как отлавливать warning в PHP?

131
10 апреля 2019, 06:20

Есть код, который отрабатывает ответы на запросы к API и там есть такой участок:

if(count($temp['data']) > 0) {

Который раз в 2-3 тысячи запросов сбоит. Видимо, от API приходит какой-то не задокументарованный ответ. Получается ошибка:

PHP Warning: count(): Parameter must be an array or an object that implements Countable

Для этого я поставил try catch в надежде отловить ответ, приходящий от сервера:

try {
    $isCountable = count($temp['data']) > 0;
} catch(Exception $e) {
    error_log('UNCOUNTABLE ERROR! At ' . $_SERVER['REQUEST_URI'] . ' with data:\n' . json_encode($temp));
}

Но catch просто не срабатывает в момент появления ошибки, а в консоли выводится всё тот же warning на строке: $isCountable = count($temp['data']) > 0;

Как мне отловить этот варнинг?

Answer 1

Вам в ошибке уже описали что надо проверить:

if (is_array($temp['data']) || ($temp['data'] instanceof Countable)) {
    // correct
} else {
    // incorrect
}
READ ALSO
Ошибка в админке wordpress «failed to open stream: No such file or directory» — как исправить?

Ошибка в админке wordpress «failed to open stream: No such file or directory» — как исправить?

Есть сайт на wordpress с установленным плагином WP Hide PostЕсть необходимость переноса сайта на новый хостинг, но решил перестраховаться и проверить...

118
1C Soap Web Service

1C Soap Web Service

Необходимо запустить проект, где есть 1С на СУБД postgreSQL на северной части, и должно быть клиентское, мобильное приложение Android, которое при...

135
Пользовательские фоновые задачи Laravel

Пользовательские фоновые задачи Laravel

Суть вопроса следующаяКаждый пользователь может создавать задачи

131