В PHP 8.1 устарела передача null в качестве параметра многим функциям. Основная проблема связана с такими функциями, как «htmlspecialchars» и «trim», где null больше не преобразуется в пустую строку. Чтобы решить эту проблему, не используя огромное количество кода, я пытался переименовать исходные встроенные функции и заменить их обертками, которые могут исправить ввод с нуля на пустую строку. Основная проблема в том, что функция "rename_function" больше не работает, последнее обновление было сделано в 2004 году. Мне нужно какое-то переопределение встроенных функций, чтобы не писать нулевую проверку каждый раз, когда функция вызывается, что делает весь мой код в два раза больше. Единственное другое решение, которое я могу придумать, - это использовать только мои пользовательские функции, но это все равно требует прохождения всего моего кода и сторонних библиотек, которые у меня есть.
В PHP 8.1, когда null передается во встроенную функцию, он больше не преобразуется автоматически в пустую строку.
Во-первых, две вещи, которые нужно иметь в виду:
htmlspecialchars($something)
можно заменить на htmlspecialchars($something ?? '')
.Далее несколько вариантов:
?? ''
, либо исправив логическую ошибку, когда вы все равно не ожидали нулевого значения.nullable_htmlspecialchars
, и выполняйте прямой поиск и замену в своем коде.nullableoverride\htmlspecialchars
; то в любом файле, где вы добавите use function nullableoverride\htmlspecialchars;
, вместо встроенной будет использоваться эта функция. Однако это должно быть добавлено в каждый файл, поэтому вам может понадобиться инструмент для его автоматического добавления.?? ''
к соответствующим вызовам функций, чтобы вам не приходилось редактировать их все вручную. К сожалению, встроенного правила для этого (пока) не существует, поэтому вам придется научиться писать свои собственные.?? ''
к простым случаям.
Я попытаюсь использовать функцию strval для преобразования null в пустую строку, чтобы при необходимости запустить ее на php до версии 7.0, чтобы поддерживать более широкий диапазон установок.