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

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

作成日: 更新日:

基本的な使い方

cloneNodeメソッドは、呼び出し元となったDOMTextオブジェクトの正確な複製を作成するメソッドです。このメソッドを実行すると、元のテキストノードと全く同じテキスト内容を持つ、新しいDOMTextオブジェクトが生成されて返されます。作成された新しいノードは、元のノードとは完全に独立した別のインスタンスです。そのため、複製元のノードや複製されたノードのどちらかを後から変更しても、もう一方に影響が及ぶことはありません。このメソッドはオプションで真偽値の引数を受け取りますが、DOMTextノードは仕様上子ノードを持たないため、この引数の値に関わらずメソッドの動作は変わりません。cloneNodeによって返されたノードは、どのドキュメントツリーにも属していない孤立した状態であることに注意が必要です。ドキュメント内でこの複製したノードを使用するには、appendChildメソッドなどを用いて、ツリー内の適切な位置に明示的に追加する必要があります。

構文(syntax)

1<?php
2
3// DOMDocumentオブジェクトを作成します
4$dom = new DOMDocument();
5
6// 元となるテキストノードを作成します
7$originalNode = $dom->createTextNode('オリジナルのテキスト');
8
9// DOMText::cloneNode() を使ってテキストノードを複製します
10// テキストノードには子ノードがないため、引数 $deep の影響はありません
11$clonedNode = $originalNode->cloneNode();
12
13// 複製されたノードのテキストを変更します
14$clonedNode->data = '複製されたテキスト';
15
16// 元のノードと複製されたノードが、それぞれ独立していることを確認します
17echo $originalNode->data . PHP_EOL; // オリジナルのテキスト
18echo $clonedNode->data . PHP_EOL;   // 複製されたテキスト
19
20?>

引数(parameters)

bool $deep = false

  • bool $deep = false: ノードとそのすべての子孫をディープコピーするかどうかを指定するブール値。true の場合、すべての子孫もコピーされます。デフォルトは false で、ノード自体のみがコピーされます。

戻り値(return)

DOMNode

DOMText オブジェクトの複製を返します。この複製されたノードは、元のノードとは独立した新しい DOMNode オブジェクトとなります。

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