【PHP8.x】isSameNodeメソッドの使い方

isSameNodeメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

isSameNodeメソッドは、指定されたDOMノードと、このメソッドが呼び出されたオブジェクト自身が、メモリ上で完全に同一のオブジェクトインスタンスであるかどうかを判定するメソッドです。PHPのDOM拡張機能の一部として提供されており、Dom\DocumentFragmentクラスに属しています。

DOM(Document Object Model)における「ノード」とは、HTMLやXML文書の各構成要素(要素、テキスト、属性など)を表すオブジェクトのことです。このisSameNodeメソッドは、引数として別のDOMノードを受け取り、呼び出し元のノードと、引数のノードが、コンピューターのメモリ上で全く同じ場所を指している(つまり、同じオブジェクトである)場合にtrueを返し、そうでない場合にfalseを返します。

重要な点として、たとえ内容や構造が全く同じように見えるノードであっても、それらが別々に作成された異なるオブジェクトインスタンスである場合は、このメソッドはfalseを返します。これは、オブジェクトの「同一性」を厳密に確認する目的で利用されます。例えば、DOMツリーを探索する際や、特定のノードが既に処理済みであるか、あるいは以前に取得したノードと現在参照しているノードが本当に同じものであるかを確認する場面で、このメソッドは非常に有効です。DOM操作において、ノードの比較を正確に行うために重要な役割を果たします。

構文(syntax)

1<?php
2$document = new DOMDocument();
3$node1 = $document->createDocumentFragment();
4$node2 = $node1; // $node1 と同じオブジェクトを参照する
5$node3 = $document->createDocumentFragment(); // 新しいDom\DocumentFragmentオブジェクトを作成
6
7// $node1 と $node2 が同じオブジェクトであるかを確認し、結果を $isSame に格納する (この場合、trueとなる)
8$isSame = $node1->isSameNode($node2);
9
10// $node1 と $node3 が同じオブジェクトであるかを確認し、結果を $isSameOther に格納する (この場合、falseとなる)
11$isSameOther = $node1->isSameNode($node3);
12?>

引数(parameters)

Dom\Node $otherNode

  • Dom\Node $otherNode: 比較対象となる別のDOMノード

戻り値(return)

bool

このメソッドは、現在操作している Dom\DocumentFragment オブジェクトと、引数として渡された別の Dom\DocumentFragment オブジェクトが同じノードを参照しているかどうかを判定し、真偽値(bool)を返します。

関連コンテンツ