PHP 8.5.0 Released!

Устаревшая функциональность

Ядро PHP

Изменения в обработчике вывода пользователя

Попытка вывода результатов (например, с помощью функции echo) в рамках обработчика вывода пользователя объявлена устаревшей. Предупреждение об устаревании будет игнорировать обработчик, производящий вывод, чтобы обеспечить его видимость; если есть вложенные обработчики вывода, следующий из них всё равно будет использоваться.

Неканонические названия типов

Неканонические имена типов (boolean), (integer), (double), и (binary) объявлены устаревшими, используйте вместо них (bool), (int), (float) и (string) соответственно.

Завершение операторов case точкой с запятой

Завершение операторов case точкой с запятой вместо двоеточия больше не поддерживается.

Операторы выполнения

Обратный машинописный апостроф как псевдоним функции shell_exec() больше не поддерживается.

Возвращение null функцией __debugInfo()

Возвращение null функцией __debugInfo() больше не поддерживается. Вместо этого возвращается пустой массив.

INI-настройка report_memleaks

INI-настройка report_memleaks объявлена устаревшей.

Повторное объявление констант

Повторное объявление констант объявлено устаревшим. Обратите внимание, что это уже вызвало предупреждение и будет вызывать его и в дальнейшем.

Проблемы со связыванием замыканий

Следующие проблемы с привязкой замыкания, которые уже выдают ошибку уровня E_WARNING, теперь считаются устаревшими:

  • Привязка экземпляра к статическому замыканию.
  • Связывание методов с объектами, которые не являются экземплярами класса (или подкласса), в котором метод определен.
  • Отвязывание $this от метода.
  • Отвязывание $this от замыкания, которое использует `$this`.
  • Привязка замыкания к области действия внутреннего класса.
  • Перепривязывание области действия замыкания, созданного функцией или методом.

Магические методы __sleep() и __wakeup()

Магические методы __sleep() и __wakeup() были мягко объявлены устаревшими. Вместо них следует использовать магические методы __serialize() и __unserialize(), либо использовать их одновременно, если требуется совместимость с PHP 7.

Использование null в качестве смещения массива

Использование null в качестве смещения массива или при вызове array_key_exists() объявлено устаревшим. Вместо этого следует использовать пустую строку.

Увеличение нечисловых строк

Увеличение нечисловых строк объявлено устаревшим. Вместо этого следует использовать функцию str_increment().

INI-настройка register_argc_argv

Извлечение $_SERVER['argc'] и $_SERVER['argv'] из строки запроса для не-CLI SAPIs больше не поддерживается. Настройте register_argc_argv=0 и переключитесь на $_GET или $_SERVER['QUERY_STRING'] для доступа к информации после проверки безопасности использования.

Модуль cURL

Функция curl_close() устарела, поскольку объекты CurlHandle освобождаются автоматически.

Функция curl_share_close() устарела, поскольку объекты CurlShareHandle освобождаются автоматически.

Модуль работы с датой и временем

Константы DATE_RFC7231 и DateTimeInterface::RFC7231 устарели. Это связано с тем, что связанный с ними часовой пояс игнорируется и всегда используется GMT.

Модуль FileInfo

Функция finfo_close() устарела, поскольку объекты finfo освобождаются автоматически.

Параметр $context функции finfo_buffer() устарел, так как игнорируется.

Модуль GD

Функция imagedestroy() устарела, поскольку объекты GdImage освобождаются автоматически.

Фреймворк HASH

Константы MHASH_* устарели.

Модуль интернационализации

INI-настройка intl.error_level устарела. Ошибки следует проверять вручную или включить исключения с помощью INI-настройки intl.use_exceptions.

Модуль LDAP

Определённые вызовы и константы Oracle Instant Client устарели. Список затронутых вызовов:

Список затронутых констант:
  • GSLC_SSL_NO_UATH
  • GSLC_SSL_ONEWAY_UATH
  • GSLC_SSL_TWOWAY_UATH

Модуль MySQLi

Функция-псевдоним mysqli_execute() устарела. Вместо неё используйте функцию mysqli_stmt_execute().

Модуль OpenSSL

Параметр $key_length функции openssl_pkey_derive() устарел. Это связано с тем, что он либо игнорируется, либо обрезает ключ, что может представлять угрозу безопасности.

Модуль PDO

Схема DSN "uri:" объявлена устаревшей из-за проблем безопасности, связанных с DSN, поступающими из удалённых URI.

Константы, специфичные для драйвера, в классе PDO объявлены устаревшими. Список затронутых констант и их замены:

Методы, специфичные для драйвера, в классе PDO объявлены устаревшими. Список затронутых методов и их замены:

Драйвер PDO_PGSQL

Константы, связанные с состояниями транзакций, объявлены устаревшими, поскольку функция недоступна в PDO:

  • PDO::PGSQL_TRANSACTION_IDLE
  • PDO::PGSQL_TRANSACTION_ACTIVE
  • PDO::PGSQL_TRANSACTION_INTRANS
  • PDO::PGSQL_TRANSACTION_INERROR
  • PDO::PGSQL_TRANSACTION_UNKNOWN

Модуль интроспекции кода Reflection

Методы setAccessible() различных объектов Reflection устарели, поскольку они больше не имеют значения.

Вызов метода ReflectionClass::getConstant() для констант, которые не существуют, больше не поддерживается.

Вызов метода ReflectionProperty::getDefaultValue() для свойств без значений по умолчанию больше не поддерживается.

Стандартная библиотека PHP (SPL)

Отмена регистрации всех автозагрузчиков путём передачи функции spl_autoload_call() в качестве callback-аргумента функции spl_autoload_unregister() больше не поддерживается. Вместо этого, если это необходимо, следует пройтись по возвращаемому значению функции spl_autoload_functions() и вызвать функцию spl_autoload_unregister() для каждого значения.

Методы SplObjectStorage::contains(), SplObjectStorage::attach() и SplObjectStorage::detach() были признаны устаревшими и заменены на SplObjectStorage::offsetExists(), SplObjectStorage::offsetSet() и SplObjectStorage::offsetUnset() соответственно.

Использование классов ArrayObject и ArrayIterator с объектами больше не поддерживается.

Стандартные модули

Функция-псевдоним socket_set_timeout() больше не поддерживается. Вместо неё используйте функцию stream_set_timeout().

Передача null функциям readdir(), rewinddir() и closedir() для использования последнего открытого каталога больше не поддерживается. Вместо этого явно укажите последний открытый каталог.

Передача целых чисел за пределами интервала [0, 255] функции chr() теперь не рекомендуется. Это связано с тем, что байт может содержать только значение в пределах этого интервала.

Передача строки, которая не является однобайтовой функции ord() устарела, это указывает на наличие ошибки.

Локально предопределенная переменная $http_response_header устарела. Вместо этого следует вызывать функцию http_get_last_response_headers().

Модуль XML

Функция xml_parser_free() устарела, поскольку объекты XMLParser освобождаются автоматически.

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top