PHP

При написании php кода для отправки записи в базу данных выходит ошибка

Message: trim(): Passing null to parameter #1 ($string) of type string is deprecated
Filename: libraries/Form_validation.php
Line Number: 1059
Код:
1052 * @param string
1053 * @return bool
1054 */
1055 public function required($str)
1056 {
1057 return is_array($str)
1058 ? (empty($str) === FALSE)
1059 : (trim($str) !== '');
1060 }
Чем заменить строку : (trim($str) !== ''); раз это устаревший способ?
Тебе же прямым английским языком пишут, что функция trim применяется НЕ к строке, а к null - что и вызывает сообщение об ошибке (раньше такое можно было, сейчас нельзя). Т.е. ты при вызове функции required передаёшь в качестве параметра НЕ массив, и НЕ строку, а null - что недопустимо.

В самой функции ошибки нет - ошибка в том месте, где ты вызываешь эту функцию.

P.S. Конструкция (empty($str) === FALSE) - глупость. Достаточно: !empty($str)

P.P.S. Ошибка всё же есть. Функция может получить и строку, и массив, а в атрибутах прописано: @param string - параметром может быть ТОЛЬКО строка.
Ольга Мишина
Ольга Мишина
66 921
Лучший ответ
У тебя предполагается, что в функцию передаётся либо массив, либо строка, но проблема в том, что кроме массивов и строк существует много других типов данных, а проверка у тебя только на массив. Вот и сыпется функция, если туда передать что-то отличное от массива или строки.
А trim - это не устаревший способ, просто пихать туда не надо что попало.
Перепиши функцию нормально. И не стесняйся писать код более понятным языком, не обязательно всё в тернарный оператор запихивать, лучше уж несколько человекопонятных if / else.
Х!
Хищник))) !!!
84 297
php 8.1?
return is_array($str) ? (empty($str) === FALSE) : (trim($str) !== '');
я вижу тут баян от которого нет смысла что з0а лютый кодер это писал
Alex 404
Alex 404
397