PHP 8.4.1 Released!

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

Ядро PHP

Неявно обнуляемые параметры

Тип параметра неявно расширяется типом null, если значение по умолчанию для параметра равно null.

Следующий код:

<?php

function foo(T1 $a = null) {}

?>
потребуется преобразовать вот так:
<?php

function foo(T1|null $a = null) {}

?>
или так:
<?php

function foo(?T1 $a = null) {}

?>

Однако, если за объявлением параметра со значением null по умолчанию идёт обязательный параметр:

<?php

function foo(T1 $a, T2 $b = null, T3 $c) {}

?>
код потребуется преобразовать вот так:
<?php

function foo(T1 $a, T2|null $b, T3 $c) {}

?>
или так:
<?php

function foo(T1 $a, ?T2 $b, T3 $c) {}

?>
поскольку объявление необязательного параметра перед обязательным устарело.

Возведение нуля в отрицательную степень

Возведение числа в отрицательную степень эквивалентно взятию обратной величины числа, возведённого в положительную степень, противоположную отрицательной. Например: 10-2 — то же, что 1 / 102. Поэтому возведение числа 0 в отрицательную степень соответствует делению на 0: 0-2 — то же, что 1 / 02, или 1 / 0. Поэтому такое поведение устарело.

Изменение касается поведения оператора возведения в степень ** и функции pow().

Следовать семантике стандарта IEEE 754 помогает новая функция fpow().

Подчёркивание _ как название класса

Именование класса символом _ устарело:

<?php

class _ {}

?>

Замечание:

Имена классов, которые начинаются с подчёркивания, не устарели:

<?php

class _MyClass {}

?>

Вызов функции trigger_error() с флагом E_USER_ERROR

Вызов функции trigger_error() с аргументом error_level, который равен значению константы E_USER_ERROR, устарел.

Такие вызовы потребуется заменить выбрасыванием исключения или вызовом языковой конструкции exit(), смотря что уместнее.

Константа E_STRICT

Поскольку уровень ошибки E_STRICT удалили, константа устарела.

Модуль cURL

Константа CURLOPT_BINARYTRANSFER устарела.

Модуль Date

Сигнатура метода DatePeriod::__construct(string $isostr, int $options = 0) устарела. Вместо устаревшего метода рекомендуют пользоваться методом DatePeriod::createFromISO8601String().

Константы SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING и SUNFUNCS_RET_DOUBLE устарели. Константы устарели вследствие устаревания функций date_sunset() и date_sunrise() в PHP 8.1.0.

Модуль DBA

Передача значения null или false в функцию dba_key_split() устарела. При передаче таких значений функция вернёт false.

Модуль DOM

Константа DOM_PHP_ERR устарела.

Следующие свойства официально устарели:

  • DOMDocument::$actualEncoding
  • DOMDocument::$config
  • DOMEntity::$actualEncoding
  • DOMEntity::$encoding
  • DOMEntity::$version

Модуль Hash

Передача недопустимых параметров в хеш-функции устарела.

Модуль Intl

Вызов функции intlcal_set() и метода IntlCalendar::set() с более чем двумя аргументами устарел. Вместо них рекомендуют пользоваться методом IntlCalendar::setDate() или IntlCalendar::setDateTime().

Вызов функции intlgregcal_create_instance() и метода IntlGregorianCalendar::__construct() с более чем двумя аргументами устарел. Вместо них рекомендуют пользоваться методом IntlGregorianCalendar::createFromDate() или IntlGregorianCalendar::createFromDateTime().

Модуль LDAP

Вызов функции ldap_connect() с более чем двумя аргументами устарел. Вместо неё рекомендуют пользоваться функцией ldap_connect_wallet().

Вызов функции ldap_exop() с более чем четырьмя аргументами устарел. Вместо неё рекомендуют пользоваться функцией ldap_exop_sync().

Модуль MySQLi

Функция mysqli_ping() и метод mysqli::ping() устарели, поскольку функцию переподключения удалили в PHP 8.2.0.

Функция mysqli_kill() и метод mysqli::kill() устарели. Завершать запущенный запрос помогает SQL-команда KILL.

Функция mysqli_refresh() и метод mysqli::refresh() устарели. Очищать кеш БД помогает SQL-команда FLUSH. Константы семейства MYSQLI_REFRESH_* тоже устарели.

Явная передача параметра mode в функцию mysqli_store_result() устарела. Константа MYSQLI_STORE_RESULT_COPY_DATA тоже устарела, поскольку работала только вместе с функцией.

Драйвер PDO_PGSQL

Экранирование знаков вопроса ?? внутри строк, обёрнутых знаками доллара, устарело. Требование экранировать знаки вопроса внутри строк отменили, поскольку драйвер PDO_PGSQL теперь содержит внутренний SQL-парсер с поддержкой оборачивания строк знаками доллара.

Драйвер PGSQL

Сигнатуры функций pg_fetch_result(), pg_field_prtlen() и pg_field_is_null() с двумя параметрами устарели. Вместо сигнатуры с двумя параметрами рекомендуют использовать сигнатуру с тремя параметрами со значением null для параметра row.

Модуль Random

Функция lcg_value() устарела, поскольку часто работала неправильно. Вместо неё рекомендуют использовать метод Random\Randomizer::getFloat().

Модуль Reflection

Вызов метода ReflectionMethod::__construct() с одним аргументом устарел. Вместо него рекомендуют использовать метод ReflectionMethod::createFromMethodName().

Модуль Session

Вызов функции session_set_save_handler() с более чем двумя аргументами устарел. Вместо неё рекомендуют использовать сигнатуру с двумя аргументами.

Изменение значения директив session.sid_length и session.sid_bits_per_character в INI-настройках устарело. Вместо изменения значений директив рекомендуют обновить бэкенд хранилища сессий, чтобы он принимал 32-символьные шестнадцатеричные идентификаторы сессий, и прекратить изменение этих INI-параметров.

Изменение значения директив session.use_only_cookies, session.use_trans_sid, session.trans_sid_tags, session.trans_sid_hosts и session.referer_check в INI-настройках устарело. Константа SID тоже устарела.

Модуль SOAP

Передача int-значений в аргументах метода SoapServer::addFunction() устарела. Для получения списка, который содержит название каждой PHP-функции, Элементы массива, который возвращает функция get_defined_functions(), сводят к одному уровню, когда требуется экспортировать список всех PHP-функций.

Константа SOAP_FUNCTIONS_ALL устарела.

Модуль SPL

Метод SplFixedArray::__wakeup() устарел, поскольку реализует методы SplFixedArray::__serialize() и SplFixedArray::__unserialize(), которыми рекомендуют заменить устаревший метод.

Значение по умолчанию для параметра escape в методах SplFileObject::setCsvControl(), SplFileObject::fputcsv() SplFileObject::fgetcsv() устарело. Значение по умолчанию рекомендуют передавать явно либо позиционно, либо через именованные аргументы. Это не касается методов SplFileObject::fputcsv() и SplFileObject::fgetcsv(), если новое значение по умолчанию установили методом SplFileObject::setCsvControl().

Стандартные функции

Сигнатура функции stream_context_set_option() с двумя аргументами устарела. Вместо неё рекомендуют пользоваться сигнатурой функции stream_context_set_options() с четырьмя аргументами.

Десериализация строк с тегом S в верхнем регистре функцией unserialize() устарела.

Значение по умолчанию для параметра escape в функциях fputcsv(), fgetcsv() и str_getcsv() устарело. Значение по умолчанию рекомендуют передавать явно либо позиционно, либо через именованные аргументы.

Модуль XML

Функция xml_set_object() устарела.

Передача в функцию xml_set_()* строк, которые не принадлежат типу callable, устарела.

Добавить

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

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