Передача значения NULL во встроенные функции PHP 8.1
PHP 8.1 на сервере.
Получаю строковое значение из таблицы БД (mariaDB):
$db_result = $mysqli->query('SELECT * FROM table1');
$db_result = $db_result->fetch_assoc();
$field1 = trim($db_result['field1']);
Все хорошо, но если запрашиваемое значение из БД равно NULL, то получаю следующее предупреждение:
PHP Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in ...
Вытаскивая значение из БД я ожидаю получить строку символов, либо пустую строку (в случае NULL) как в предыдущих версиях PHP.
Где-то вычитал, что в последних версиях передавать встроенным функциям значение NULL запрещается.
Примечательно, что следующий код, никаких предупреждений не выдает:
echo trim(NULL);
Вопрос у меня такой: что предпринять, для того, чтобы NULL из БД интерпретировался как пустая строка? Переписать весь код проекта, добавив дополнительное сравнение на NULL? Может быть в конфиге php можно задать интерпретацию NULL по умолчанию? как?
Ответы (2 шт):
либо применять пхпшный null coalesce
trim($db_result['field1'] ?? 'DEFAULT_VALUE')
либо Бдшный. Например в постгрес есть COALESCE
Забавно <? print trim(NULL); , пых-пых всё правильно решил.
Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/user/scripts/code.php on line 1
Исправление:
trim($db_result['field1'] ?? '')
Стоит всё же учитывать что PHP переживает сейчас 4ю фазу, где строгая типизация доминирует над ленивым кодом (LazyCode).