Тип параметра неявно расширяется типом 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 {}
?>
E_USER_ERROR
Вызов функции trigger_error()
с аргументом error_level
, который
равен значению константы E_USER_ERROR
, устарел.
Такие вызовы потребуется заменить выбрасыванием исключения или вызовом языковой конструкции exit(), смотря что уместнее.
Константа CURLOPT_BINARYTRANSFER
устарела.
Сигнатура метода 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.
Передача значения null
или false
в функцию dba_key_split()
устарела.
При передаче таких значений функция вернёт false
.
Константа DOM_PHP_ERR
устарела.
Следующие свойства официально устарели:
Передача недопустимых параметров в хеш-функции устарела.
Вызов функции intlcal_set() и метода IntlCalendar::set() с более чем двумя аргументами устарел. Вместо них рекомендуют пользоваться методом IntlCalendar::setDate() или IntlCalendar::setDateTime().
Вызов функции intlgregcal_create_instance() и метода IntlGregorianCalendar::__construct() с более чем двумя аргументами устарел. Вместо них рекомендуют пользоваться методом IntlGregorianCalendar::createFromDate() или IntlGregorianCalendar::createFromDateTime().
Вызов функции ldap_connect() с более чем двумя аргументами устарел. Вместо неё рекомендуют пользоваться функцией ldap_connect_wallet().
Вызов функции ldap_exop() с более чем четырьмя аргументами устарел. Вместо неё рекомендуют пользоваться функцией ldap_exop_sync().
Функция 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 теперь содержит внутренний SQL-парсер
с поддержкой оборачивания строк знаками доллара.
Сигнатуры функций pg_fetch_result(),
pg_field_prtlen()
и pg_field_is_null() с двумя параметрами устарели.
Вместо сигнатуры с двумя параметрами рекомендуют использовать
сигнатуру с тремя параметрами со значением null
для параметра
row
.
Функция lcg_value() устарела, поскольку часто работала неправильно. Вместо неё рекомендуют использовать метод Random\Randomizer::getFloat().
Вызов метода ReflectionMethod::__construct() с одним аргументом устарел. Вместо него рекомендуют использовать метод ReflectionMethod::createFromMethodName().
Вызов функции 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
тоже устарела.
Передача int-значений в аргументах метода SoapServer::addFunction() устарела. Для получения списка, который содержит название каждой PHP-функции, Элементы массива, который возвращает функция get_defined_functions(), сводят к одному уровню, когда требуется экспортировать список всех PHP-функций.
Константа SOAP_FUNCTIONS_ALL
устарела.
Метод 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_set_object() устарела.
Передача в функцию xml_set_()* строк, которые не принадлежат типу callable, устарела.