Особенности работы с DOMDocument в php 7 и 8
Разрабатывал давече один скрипт по работе с XML, на рабочем ПК, установленным php 8.2, и был весьма удивлён, что код вида:
1 2 3 4 |
$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. , ругаясь на
1 |
Call to undefined method DOMNodeList::remove() |
Странно подумал я, почесав затылок. Пришлось переписать код на вида:
1 2 3 4 5 6 7 8 9 10 11 |
$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 сломана. Хотя может плохо смотрел..