【PHP8.x】isSameNodeメソッドの使い方
isSameNodeメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
『isSameNodeメソッドは、あるノードが別のノードと同一のオブジェクトであるかどうかを判定するメソッドです』
このメソッドは、引数に指定されたノードが、メソッドを呼び出したノードとメモリ上で全く同じインスタンスを参照している場合に true を返します。それ以外の場合、つまり異なるインスタンスである場合は false を返します。この動作は、PHPの厳密な比較演算子 === を用いて2つのオブジェクト変数を比較するのと同じ結果となります。DOM操作において重要な点として、isEqualNodeメソッドとの違いが挙げられます。isEqualNodeがノードの種類、名前、属性、子ノードといった内容が構造的に等しいかどうかを再帰的に比較するのに対し、isSameNodeは参照が同じであるか、つまり完全に同一のオブジェクトであるかという点のみを判定します。そのため、あるノードを複製(clone)して作成した新しいノードは、内容は同じでもisSameNodeでは false と判定されます。このメソッドにより、2つの変数が同じDOM要素を指しているかを正確に確認できます。
構文(syntax)
1<?php 2// Dom\Document のインスタンス 3$document = new Dom\Document(); 4 5// 比較対象となる Dom\Node のインスタンス 6$other_node = new Dom\Document(); 7 8// 2つのノードが同一であるか (同じオブジェクトを指しているか) を判定します。 9// 戻り値: bool (true または false) 10$result = $document->isSameNode($other_node); 11?>
引数(parameters)
?Dom\Node $otherNode
- ?Dom\Node $otherNode: 比較対象のDOMノード
戻り値(return)
bool
このメソッドは、呼び出し元のDOMNodeオブジェクトが、引数で渡された別のDOMNodeオブジェクトと同一のノードである場合にtrueを、そうでない場合にfalseを返します。