PHP 8.5: Функция `xml_parser_free` объявлена устаревшей

С версии PHP 8.0 вызов `xml_parser_free()` перестал влиять на работу парсера, а в PHP 8.5 функция официально помечена как устаревшая.

Функция xml_parser_free из расширения xml раньше использовалась для освобождения ресурса XML-парсера. После перехода PHP от ресурсов к объектам парсер стал экземпляром класса XMLParser. Например, xml_parser_create теперь возвращает объект XMLParser, а не ресурс. До версии PHP 8.0 требовалось вручную освобождать парсер через xml_parser_free или ждать автоматической очистки движком PHP.

С появлением объектов XMLParser в PHP 8.0 необходимость в xml_parser_free отпала: объекты уничтожаются автоматически при выходе из области видимости. С этой версии функция перестала выполнять полезные действия. В PHP 8.5 xml_parser_free официально объявлена устаревшей, и её вызов теперь генерирует предупреждение:

$parser = xml_parser_create();
xml_parser_free($parser); // Function xml_parser_free() is deprecated since 8.5, as it has no effect since PHP 8.0

Рекомендуемая замена

В проектах на PHP 8.0 и выше вызов xml_parser_free можно просто удалить. Поскольку функция не действовала уже с PHP 8.0, такое удаление сохранит обратную совместимость.

Если приложение должно поддерживать старые версии PHP (5 и 7), используйте условный вызов с проверкой версии:

-xml_parser_free($parser);
+PHP_VERSION_ID < 80000 && xml_parser_free($parser);

Устаревание xml_parser_free — часть общей модернизации языка. Подробнее со всеми нововведениями можно ознакомиться в обзоре PHP 8.5.

Комментарии


Дополнительные материалы

Предыдущая Статья

PHP 8.5: Функции `curl_close` и `curl_share_close` устарели

Следующая Статья

PHP 8.5: Функция `socket_set_timeout` объявлена устаревшей