Есть код, который отрабатывает ответы на запросы к 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;
Как мне отловить этот варнинг?
Вам в ошибке уже описали что надо проверить:
if (is_array($temp['data']) || ($temp['data'] instanceof Countable)) {
// correct
} else {
// incorrect
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости