Функционал, объявленный устаревшим в PHP 7.2.x
Строки без кавычек
Строки без кавычек, которые не являются существующими глобальными константами, считались за строки.
Такое поведение раньше вызывало ошибку уровня E_NOTICE
, но теперь будет E_WARNING
.
В следующей основной версии PHP вместо ошибки будет выбрасываться исключение Error.
<?php
var_dump(NONEXISTENT);
/* Вывод:
Warning: Use of undefined constant NONEXISTENT - assumed 'NONEXISTENT' (this will throw an Error in a future version of PHP) in %s on line %d
string(11) "NONEXISTENT"
*/
png2wbmp() и jpeg2wbmp()
Функции png2wbmp() и jpeg2wbmp() из модуля GD объявлены устаревшими и будут удалены в следующей основной версии PHP.
Вариант INTL_IDNA_VARIANT_2003
В модуле Intl объявлен устаревшим вариант
INTL_IDNA_VARIANT_2003
, который в настоящее время
используется по умолчанию для функций idn_to_ascii()
и idn_to_utf8(). В PHP 7.4 значение по умолчанию будет изменено
на INTL_IDNA_VARIANT_UTS46
, а в следующей основной версии PHP
константа INTL_IDNA_VARIANT_2003
будет полностью удалена.
Функция __autoload()
Функция __autoload() была объявлена устаревшей, потому что она уступает альтернативной функции spl_autoload_register() (из-за того, что не может иметь очередь из функций автозагрузки), и ввиду того, что нет совместимости между этими двумя стилями автозагрузки.
Параметр track_errors
и переменная $php_errormsg
Когда параметр track_errors
включён в ini-настройках,
переменная $php_errormsg
создаётся в локальной области видимости,
когда происходит не фатальная ошибка. Учитывая, что предпочтительным способом получения такой информации об ошибке
является использование функции error_get_last(), данная возможность была объявлена устаревшей.
Функция create_function()
Учитывая проблемы c безопасностью данной функции (из-за того, что она является обёрткой над eval()), эта функция объявлена устаревшей. Предпочтительной альтернативой является использование анонимных функций.
Параметр mbstring.func_overload
Учитывая проблемы совместимости строковых функций, используемых в окружениях с включенным этим параметром, этот параметр объявлен устаревшим.
Приведение типа (unset)
Приведение любого выражения с использованием этого типа всегда приводит к null
, и поэтому
этот избыточный тип приведения объявлен устаревшим.
parse_str() без второго параметра
Без передачи второго параметра функции parse_str(), параметры строки запроса будут заполнять текущую таблицу символов (будут доступны как переменные в локальной области видимости). Учитывая последствия для безопасности из-за этого, использование parse_str() без второго параметра объявлено устаревшим. Эта функция всегда должна использоваться с двумя аргументами, так как во второй аргумент сохраняются параметры строки запроса в качестве элементов массива.
Функция gmp_random()
Эта функция генерирует случайное число, основанное на диапазоне, который вычисляется в зависимости от платформы, размера лимба (limb). Из-за этого данная функция объявлена устаревшей. Предпочительным способом генерации случайного числа через модуль GMP является использование функций gmp_random_bits() и gmp_random_range().
Функция each()
Эта функция намного медленнее по итерации, чем использование обычного
foreach
, и создаёт проблемы с реализацией для некоторых
изменений языка, поэтому данная функция объявлена устаревшей.
assert() со строковым аргументом
Использование assert() со строковым параметром требовало передачи строки для исполнения в eval(). Учитывая возможность удалённого выполнения кода, использование assert() со строковым аргументом теперь объявлено устаревшим в пользу использования логических выражений.
Аргумент $errcontext
в обработчиках ошибок
Аргумент $errcontext
содержит все локальные переменные в месте,
где была произошла ошибка. Учитывая редкое его использование и проблемы, связанные с
внутренней оптимизацией, этот параметр объявлен устаревшим. Вместо этого рекомендуется использовать отладчик для получения информации об ошибках.
Функция read_exif_data()
Псевдоним read_exif_data() был объявлен устаревшим в пользу функции exif_read_data().