【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 オブジェクトとなります。