【PHP8.x】Dom\Entity::isEqualNode()メソッドの使い方
isEqualNodeメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
isEqualNodeメソッドは、現在のノードが、引数で指定された別のノードと等しいかどうかを判定するメソッドです。このメソッドにおける「等しい」とは、2つのノードがメモリ上で同じオブジェクトを指しているかではなく、ノードの型や内容が構造的に同一であるかを意味します。判定は、ノードの型、名前、値といった基本的な特性に加えて、そのノードが持つ属性や子ノードまで含めて再帰的に行われます。具体的には、ノード名や名前空間URIが一致し、さらに両方のノードが持つ属性の集合が、順序は問わないものの内容的に同一である必要があります。最も重要な点として、子ノードのリストも比較され、対応する位置にあるすべての子ノード同士が再帰的に等しいと判定された場合にのみ、親ノードも等しいと見なされます。この厳密な比較により、DOMツリーの特定の部分が内容的に全く同じであるかを検証できます。2つのノードが構造的に等しい場合はtrueを、そうでない場合や引数がnullの場合はfalseを返します。
構文(syntax)
1<?php 2 3$xml = <<<XML 4<?xml version="1.0" encoding="UTF-8"?> 5<!DOCTYPE root [ 6 <!ENTITY entityA "value A"> 7 <!ENTITY entityB "value B"> 8]> 9<root /> 10XML; 11 12$doc1 = new DOMDocument(); 13$doc1->loadXML($xml); 14 15$doc2 = new DOMDocument(); 16$doc2->loadXML($xml); 17 18$entity1 = $doc1->doctype->entities->getNamedItem('entityA'); 19$entity2_same = $doc2->doctype->entities->getNamedItem('entityA'); 20$entity3_different = $doc1->doctype->entities->getNamedItem('entityB'); 21 22// bool Dom\Entity::isEqualNode(?Dom\Node $other) 23$areEqual = $entity1->isEqualNode($entity2_same); 24$areDifferent = $entity1->isEqualNode($entity3_different); 25$isNullCompared = $entity1->isEqualNode(null); 26
引数(parameters)
?Dom\Node $otherNode
- ?Dom\Node $otherNode: 比較対象のノードを指定します。
nullを指定すると、自身がnullノードとして比較されます。
戻り値(return)
bool
このメソッドは、呼び出し元のノードと引数として渡されたノードが、構造的および値的に等しい場合に true を返します。それ以外の場合は false を返します。