Slash-Zn
@Slash-Zn

Как исправить «ord(): Passing null to parameter #1 ($character) of type string is deprecated»?

Здравствуйте!
После перехода на PHP 8.1.6 сразу получил ошибку: Error: ord(): Passing null to parameter #1 ($character) of type string is deprecated - include/library/jsmin/jsmin2.class.php (339), на строку:
if (ord($get) <= self::ORD_LF) { // EOL reached
Весь код метода выглядит так:
protected function singleLineComment()
    {
        $comment = '';
        while (true) {
            $get = $this->get();
            $comment .= $get;
            if (ord($get) <= self::ORD_LF) { // EOL reached
                // if IE conditional comment
                if (preg_match('/^\\/@(?:cc_on|if|elif|else|end)\\b/', $comment)) {
                    return "/{$comment}";
                }
                return $get;
            }
        }
    }

Подскажите, как это можно исправить?
Спасибо.
  • Вопрос задан
  • 719 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
У вас метод get() может вернуть null, а ord() в этом случае выдаст предупреждение.
Первый вариант решения, самый быстрый - проверять вернувшееся значение
$get = $this->get() ?? "\x00";
Второй - отказаться от ord() и заменить числовую константу ORD_LF на строковую с нужным значением, вместо 10 использовать "\x0A". Придётся просмотреть все места, где константа используется.
Третий - вместо null возвращать символ с кодом 0, то есть "\x00". Но надо проверить другие места использования get() и заменить в них проверку на null.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы