PHP 8.6.0 Beta 1 is available for testing

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

Ядро PHP

Реализация Serializable без __serialize() и __unserialize()

Если не требуется поддержка версий PHP меньше 7.4, должны быть реализованы только эти два магических метода, иначе нужно реализовать как методы интерфейса, так и магические методы.

Передача null параметрам встроенных функций, не допускающим значение NULL

Больше не рекомендуется передавать значение NULL скалярным параметрам встроенных функций. В противном случае теперь будет вызвано уведомление. Такое ограничение было введено, чтобы лучше соответствовать работе пользовательских функций, где параметры, допускающие значение NULL, должны быть для этого явно обозначены.

<?php
var_dump(str_contains("foobar", null));
// Deprecated: Passing null to parameter #2 ($needle) of type string
// is deprecated
?>

Неявная несовместимость преобразования float к int

Теперь нужно избегать неявного преобразования числа с плавающей точкой (float ) к целому числу (int ), которое приводит потере точности. Это влияет на ключи массива (array ), объявления целочисленных (int ) типов в принудительном режиме и операторов, работающие с целыми числами (int ).

<?php
$a = [];
$a[15.5]; // устарело, поскольку значение ключа теряет компонент 0.5
$a[15.0]; // работает, так как 15.0 == 15
?>

Вызов static-элемента в трейтах

Вызов static-метода или доступ к static-свойству непосредственно в трейте устарел. К статическим методам и свойствам следует обращаться только в классе, использующем трейт.

Возврат не массива (array ) из __sleep()

Возвращаемое значение __sleep(), не являющееся массивом, теперь сгенерирует уведомление.

Возврат значения по ссылке из функции void

<?php
function &test(): void {}
?>
Такая функция сбивает с толку, поэтому теперь выдаст следующий E_NOTICE : Only variable references should be returned by reference (По ссылке должны возвращаться только ссылки на переменные).

Автовивификация из false

Автовивификация - это процесс создания нового массива (array ) при добавлении нового значения. Автовивификация запрещена для скалярных значений, однако false был исключением. Теперь такое поведение устарело.

<?php
$arr = false;
$arr[] = 2; // устарело
?>

Замечание:

Автовивификация из null и неопределённого значения по-прежнему разрешена:

<?php
// Из неопределённого значения
$arr[] = 'какое-то значение';
$arr['doesNotExist'][] = 2;
// Из null
$arr = null;
$arr[] = 2;
?>

ctype

Проверка нестроковых аргументов

Передача нестрокового аргумента устарела. В будущем аргумент будет интерпретироваться как строка вместо кода ASCII. В зависимости от предполагаемого поведения аргумент должен быть приведён к строке (string ) явным образом или через вызов chr() . Это изменение относится ко всем функциям ctype_*().

Date

Функции date_sunrise() и date_sunset() устарели в пользу date_sun_info() .

Функция strptime() устарела. Вместо неё используйте date_parse_from_format() (для синтаксического анализа, не зависящего от языкового стандарта) или IntlDateFormatter::parse() (для синтаксического анализа, зависящего от языкового стандарта).

Функция strftime() и gmstrftime() устарели. Используйте вместо них функцию date() (для форматирования, не зависящего от языкового стандарта) или метод IntlDateFormatter::format() (для форматирования, зависящего от языкового стандарта).

Фильтр

Фильтры FILTER_SANITIZE_STRING и FILTER_SANITIZE_STRIPPED устарели.

INI-директива filter.default устарела.

GD

Параметр num_points функции imagepolygon() , imageopenpolygon() и imagefilledpolygon() устарел.

Хеширование

Функции mhash() , mhash_keygen_s2k() , mhash_count() , mhash_get_block_size() и mhash_get_hash_name() устарели. Вместо них используйте функции hash_*().

IMAP

Константа NIL устарела. Вместо неё используйте 0.

Intl

Вызов IntlCalendar::roll() с логическим значением (bool ) устарел. Используйте 1 и -1 вместо true и false соответственно.

Многобайтовые строки

Вызов mb_check_encoding() без каких-либо аргументов устарел.

MySQLi

Свойство mysqli_driver::$driver_version устарело. Оно было неактуальным, используйте вместо него PHP_VERSION_ID .

Вызов метода mysqli::get_client_info() или mysqli_get_client_info() с аргументом mysqli устарел. Используйте mysqli_get_client_info() без каких-либо аргументов, чтобы получить информацию о версии клиентской библиотеки.

Метод mysqli::init() устарел. Замените вызовы parent::init() на parent::__construct().

OCI8

INI-директива oci8.old_oci_close_semantics устарела.

ODBC

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

PDO

Режим выборки PDO::FETCH_SERIALIZE устарел.

PgSQL

Функциям pgsql_*() теперь нужно явно передавать параметр connection.

SOAP

Параметр ssl_method в SoapClient::__construct() устарел в пользу параметров контекста потока SSL.

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

Вызов key() , current() , next() , prev() , reset() или end() с объектами (object ) устарел. Либо сначала преобразуйте объект (object ) в массив (array ) с помощью функции get_mangled_object_vars() , либо используйте методы, предоставляемые классом, реализующим интерфейс Iterator , например, ArrayIterator .

INI-директива auto_detect_line_endings устарела. При необходимости обработайте разрывы строк "\r" вручную.

Константы FILE_BINARY и FILE_TEXT устарели. Они никогда не имели смысла.

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

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

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

AltStyle によって変換されたページ (->オリジナル) /