Особенности работы с DOMDocument в php 7 и 8
Разрабатывал давече один скрипт по работе с XML, на рабочем ПК, установленным php 8.2, и был весьма удивлён, что код вида:
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadXML($this->xml_req);
$root = $dom->documentElement;
$root->getElementsByTagName('Signature')->item(0)->remove();
Отлично работает на PHP 8 и не работает на PHP 7. , ругаясь на
Call to undefined method DOMNodeList::remove()
Странно подумал я, почесав затылок. Пришлось переписать код на вида:
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadXML($xml_req_template);
$root = $dom->documentElement;
$parents=$root->getElementsByTagName('Signature');
for ($i = $parents->length - 1; $i >= 0; $i--) {
$parent=$parents->item($i);
if ($parent && $parent->parentNode) {
$parent->parentNode->removeChild($parent);
}
}
И нигде ведь не попадалось в документации по работе с PHP, что совместимость с php7 сломана. Хотя может плохо смотрел..