AMP_DOM_Utils::recursive_force_closing_tags PHP Метод

recursive_force_closing_tags() публичный статический Метод

public static recursive_force_closing_tags ( $dom, $node )
    public static function recursive_force_closing_tags($dom, $node)
    {
        if (XML_ELEMENT_NODE !== $node->nodeType) {
            return;
        }
        if (self::is_self_closing_tag($node->nodeName)) {
            return;
        }
        if (self::is_node_empty($node)) {
            $text_node = $dom->createTextNode('');
            $node->appendChild($text_node);
            return;
        }
        $num_children = $node->childNodes->length;
        for ($i = $num_children - 1; $i >= 0; $i--) {
            $child = $node->childNodes->item($i);
            self::recursive_force_closing_tags($dom, $child);
        }
    }

Usage Example

 public function test__recursive_force_closing_tags__force_close_with_children()
 {
     $dom = new DOMDocument();
     $node = $dom->createElement('div');
     $child_with_closing = $dom->createElement('amp-img');
     $child_self_closing = $dom->createElement('br');
     $node->appendChild($child_with_closing);
     $node->appendChild($child_self_closing);
     $expected = '<div><amp-img></amp-img><br/></div>';
     AMP_DOM_Utils::recursive_force_closing_tags($dom, $node);
     $this->assertEquals($expected, $dom->saveXML($node));
 }