PHP 8.4.1 Released!

Функционал, объявленный устаревшим в 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().

Добавить

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

up
14
webmaster at thedigitalorchard dot ca
6 years ago
Instead of __autoload(), you can use spl_autoload_register() very easily, as per the documentation:

spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});

And this lets you have multiple autoloaders instead of one global one.
up
0
Anonymous
6 years ago
An empty <?php?> Codeblock in PHP 7.2.0 will put out an "Unquoted strings" warning. To prevent that, add at least one empty space into the codeblock.

Example:
<?php

<?php/*
echo "This was some useful code.\n";
*/
?>

?>
Gives: PHP Warning: Use of undefined constant php - assumed 'php' (this will throw an Error in a future version of PHP)

Fix via:
<?php

<?php /*
echo "This was some useful code.\";
*/
?>

?>

Don't know if that is an intentional behaviour or a side effect.
To Top