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

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

作成日: 更新日:

基本的な使い方

isSameNodeメソッドは、現在のDom\Nodeオブジェクトが、引数で指定された別のDom\Nodeオブジェクトと物理的に完全に同一であるかを確認するメソッドです。このメソッドはDom\Nodeクラスのインスタンスに対して呼び出すことができ、比較したいDom\Nodeインスタンスを唯一の引数として受け取ります。戻り値はブール値(trueまたはfalse)で、両方のノードがDOMツリー上のまったく同じノードオブジェクトを参照している場合にtrueを返します。

ここで言う「物理的に完全に同一」とは、ノードの持つ値や属性、子ノードなどが同じであるかどうかではなく、メモリ上の同じオブジェクトインスタンスであり、DOMツリー上の同じ位置にあるノードそのものを指していることを意味します。たとえノードの型、名前、属性、内容、子ノードがすべて同じであっても、それらが異なるオブジェクトとして存在する場合、このメソッドはfalseを返します。この挙動は、ノードの内容が同じであればtrueを返すisEqualNode()メソッドや、オブジェクトのプロパティ値が同じであればtrueを返すPHPの==演算子とは異なります。

このメソッドは、DOM操作において、複数の変数や関数呼び出しによって取得されたノードが、実際にはDOMツリー内の同じ要素を指しているかを確認したい場合に非常に有用です。例えば、特定のノードが既に処理済みであるか、あるいは特定のリストにすでに含まれているかを効率的に判断するために使用できます。これにより、意図しない重複処理を避けたり、特定のノードに対する操作が正しく行われているかを検証したりすることが可能になり、堅牢なDOM処理の実装に貢献します。

構文(syntax)

1<?php
2// DOMDocumentオブジェクトを作成します
3$document = new DOMDocument();
4
5// 2つの異なるDOM要素(ノード)を作成します
6$nodeA = $document->createElement('div');
7$nodeB = $document->createElement('span');
8
9// nodeAと同じオブジェクトを参照する別の変数を作成します
10$nodeC = $nodeA;
11
12// isSameNode メソッドを使用して、ノードが同じであるかをチェックします。
13// $nodeA と $nodeB は異なるDOMノードオブジェクトなので、false を返します
14var_dump($nodeA->isSameNode($nodeB));
15
16// $nodeA と $nodeA 自身は同じDOMノードオブジェクトなので、true を返します
17var_dump($nodeA->isSameNode($nodeA));
18
19// $nodeA と $nodeC は同じDOMノードオブジェクトを参照しているので、true を返します
20var_dump($nodeA->isSameNode($nodeC));
21?>

引数(parameters)

Dom\Node $otherNode

  • Dom\Node $otherNode: 比較対象となる他のDom\Nodeオブジェクト

戻り値(return)

bool

このメソッドは、現在ノードと指定されたノードが同一であるかどうかを示すブール値を返します。真は同一であることを、偽は同一でないことを示します。

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