Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【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 を返します。

関連コンテンツ

関連プログラミング言語