【PHP8.x】Dom\EntityReference::isSameNode()メソッドの使い方
isSameNodeメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
『isSameNodeメソッドは、指定したノードが、このメソッドを呼び出したノードと完全に同一のオブジェクトであるかどうかを判定するために実行するメソッドです。ここで言う「同一」とは、ノードの種類や属性、持つ値が同じであること(同値性)を意味するのではなく、プログラムのメモリ上で全く同じインスタンスを指している状態(同一性)であるかを厳密に評価します。この動作は、PHPの厳密な比較演算子である === と同じです。一方で、比較演算子 == はノードの内容が等しいかどうかを比較するため、isSameNode とは判定基準が異なります。このメソッドは、引数として比較対象となるノードオブジェクトを一つ受け取り、もし二つのノードがメモリ上で同じものであれば true を、異なるものであれば false を返します。DOMツリーを操作する際に、二つの変数が指しているノードが、見た目が同じだけの別々のノードなのか、それとも単一のノードへの参照なのかを正確に区別したい場合に非常に有用です。
構文(syntax)
1<?php 2 3$doc = new DOMDocument(); 4$doc->loadXML( 5 '<!DOCTYPE root [<!ENTITY myEntity "entityValue">]><root>&myEntity;</root>' 6); 7 8// エンティティ参照ノードを取得します 9$entityRefNode = $doc->documentElement->firstChild; 10 11// 比較対象のノードを用意します 12$sameNode = $doc->documentElement->firstChild; // 同一のノード 13$differentNode = $doc->documentElement; // 別のノード(<root>要素) 14 15// isSameNode() を使って、ノードが同一のオブジェクトであるかを確認します 16$result1 = $entityRefNode->isSameNode($sameNode); 17$result2 = $entityRefNode->isSameNode($differentNode); 18 19var_dump($result1); // bool(true) 20var_dump($result2); // bool(false) 21 22?>
引数(parameters)
?Dom\Node $otherNode
- ?Dom\Node $otherNode: 比較対象となるDom\Nodeオブジェクト。nullを指定した場合、現在のノードがDOMツリーに存在しない場合にtrueを返します。
戻り値(return)
bool
このメソッドは、現在のノードと指定されたノードが同じノードであるかどうかを示す真偽値(bool)を返します。