Сервер: Исправление ошибки TypeError: sizeof() в PHP 8+

В PHP 8+ функция sizeof(), которая является алиасом для count(), вызывает ошибку, если переданный аргумент не является массивом или объектом, реализующим интерфейс Countable.

Проблема с использованием функции sizeof() в PHP 8+ заключается в том, что она вызывает фатальную ошибку (Fatal Error), если переданный аргумент не является массивом или объектом, реализующим интерфейс Countable. В PHP 7 и более ранних версиях это приводило к предупреждению (Warning), но код продолжал выполняться. В PHP 8+ такое поведение изменилось, и теперь передача некорректного типа аргумента приводит к немедленному завершению выполнения скрипта с фатальной ошибкой.

Пример ошибки

Fatal error: Uncaught TypeError: sizeof(): Argument #1 ($value) must be of type Countable|array, null given

Чтобы избежать этой ошибки, перед использованием sizeof() необходимо проверить, что переменная $paymentLog действительно является массивом или объектом, реализующим интерфейс Countable. Можно использовать функцию is_countable(), которая была введена в PHP 7.3, для проверки, является ли переменная пригодной для подсчета.

# Проверяем, что переменная $paymentLog может быть использована с sizeof(), прежде чем вызывать эту функцию. 
# Это устраняет возможность возникновения ошибки TypeError
if( is_countable( $paymentLog ) && sizeof( $paymentLog ) > 0 )
{
    // Код, если $paymentLog не пустой
}
else
{
    // Код, если $paymentLog пустой или не массив
}
Сервер PHP Просмотров: 127
Оценить код:

Комментарии

Ваш комментарий будет первым.
Войдите, чтобы оставить комментарий.