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

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

作成日: 更新日:

基本的な使い方

isSameNodeメソッドは、呼び出し元のDOMノードが、引数として指定された別のDOMノードと完全に同一のオブジェクトであるかどうかを判定するメソッドです。このメソッドは、PHPのDOM拡張機能において、XMLやHTMLなどの構造化された文書を操作する際に利用されます。

具体的には、二つのDOMノードがメモリ上で同じインスタンスを指している場合にのみtrueを返し、それ以外の場合はfalseを返します。例えば、同じ内容を持つ異なる要素ノード、あるいは同じ属性名を持つ異なる属性ノードなど、見かけ上の内容が一致していても、オブジェクトとしてのインスタンスが異なればfalseとなります。これは、ノードの内容が等しいかどうかではなく、オブジェクトとしての同一性を厳密に比較する際に非常に重要です。

このメソッドは、複数の変数に同じDOMノードが代入されている状況や、文書の異なる部分から同じノードを取得した際に、それらが実際に同一のノードオブジェクトであるかを確認したい場合に役立ちます。特に、DOMツリー内の特定のノードの状態を追跡したり、重複するノード参照を区別したりする必要があるシステム開発において、正確なノードの同一性判定ロジックを実装するために使用されます。

構文(syntax)

1<?php
2
3// 2つの Dom\XMLDocument オブジェクトを準備します
4$doc1 = new Dom\XMLDocument();
5$doc1->loadXML('<root><item/></root>');
6
7$doc2 = new Dom\XMLDocument();
8$doc2->loadXML('<root><item/></root>');
9
10// $doc1 への参照を別の変数に代入します
11$same_as_doc1 = $doc1;
12
13// isSameNodeは、2つのノードがメモリ上で全く同じオブジェクトであるかを判定します
14
15// $doc1 と $same_as_doc1 は同じオブジェクトなので true を返します
16$result1 = $doc1->isSameNode($same_as_doc1);
17var_dump($result1);
18
19// $doc1 と $doc2 は内容は同じでも異なるオブジェクトなので false を返します
20$result2 = $doc1->isSameNode($doc2);
21var_dump($result2);
22
23?>

引数(parameters)

?Dom\Node $otherNode

  • ?Dom\Node $otherNode: 比較対象のノードを指定します。null も指定可能です。

戻り値(return)

bool

このメソッドは、現在のノードと指定されたノードが同じノードであるかどうかを判定し、真偽値(boolean)を返します。

【PHP8.x】isSameNodeメソッドの使い方 | いっしー@Webエンジニア