Сервер: Исправление ошибки 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 пустой или не массив }
Комментарии