【PHP8.x】Dom\Entity::isSameNode()メソッドの使い方
isSameNodeメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
isSameNodeメソッドは、あるエンティティノードが、引数で指定された別のノードと完全に同一のオブジェクトであるかどうかを判定するために使用するメソッドです。このメソッドは、2つの変数がメモリ上の全く同じノードインスタンスを参照しているかを厳密に比較します。したがって、ノードの種類、名前、属性、その他の内容がすべて同じであったとしても、それらが別々に生成されたオブジェクトである場合はfalseを返します。比較対象のノードは引数としてDom\Nodeオブジェクトまたはnullを受け取ります。2つのノードが同一であればtrueを、異なるオブジェクトであるか、引数がnullの場合はfalseを返します。このメソッドは、ノードの内容が等しいかどうかを調べるisEqualNodeメソッドとは目的が異なります。isSameNodeはオブジェクトの参照が同じかどうかという「同一性」を、isEqualNodeは内容が同じかどうかという「等価性」を確認する点で区別されます。
構文(syntax)
1<?php 2$xml = <<<XML 3<?xml version="1.0"?> 4<!DOCTYPE root [ 5 <!ENTITY entity1 "value1"> 6 <!ENTITY entity2 "value2"> 7]> 8<root/> 9XML; 10 11$doc = new Dom\Document(); 12$doc->loadXML($xml); 13 14// DOMDocumentTypeからエンティティノードを取得 15$doctype = $doc->doctype; 16$entities = $doctype->entities; 17 18// 比較対象のDom\Entityオブジェクトを取得 19$nodeA = $entities->getNamedItem('entity1'); 20$nodeB = $entities->getNamedItem('entity1'); // $nodeAと同一のノード 21$nodeC = $entities->getNamedItem('entity2'); // $nodeAとは異なるノード 22 23// bool isSameNode(?Dom\Node $otherNode) 24 25// 同一ノードかどうかを比較 26$isSame1 = $nodeA->isSameNode($nodeB); // true 27$isSame2 = $nodeA->isSameNode($nodeC); // false 28?>
引数(parameters)
?Dom\Node $otherNode
- ?Dom\Node $otherNode: 比較対象となるもう一方のDom\Nodeオブジェクト
戻り値(return)
bool
このメソッドは、現在のノードと指定されたノードが同じノードであるかどうかを示すブール値を返します。真であれば同じノード、偽であれば異なるノードです。