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

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

作成日: 更新日:

基本的な使い方

cloneNodeメソッドは、Dom\CharacterDataクラスに属し、呼び出し元のノードを複製するメソッドです。Dom\CharacterDataは、テキストノードやコメントノードなど、文字列データを保持するDOMノードの基底クラスです。このメソッドは、現在のDom\CharacterDataノードの正確なコピーを作成し、新しい独立したノードとして返します。

このメソッドは、ブール値の$deepを引数に取ります。通常、$deeptrueなら子孫も含めて複製(ディープコピー)、falseならノード自身のみを複製(シャローコピー)します。しかし、Dom\CharacterDataクラスのノード(テキストノードやコメントノードなど)は子ノードを持ちません。そのため、この$deep引数にtrueまたはfalseのどちらを指定しても、常にノード自身のみが複製され、結果に差はありません。

複製された新しいノードは、元のノードとは完全に独立しており、DOMツリー上には自動的に挿入されるわけではありません。元のノードに変更を加えても複製されたノードには影響せず、その逆も同様です。この機能は、既存のDOMノードをテンプレートとして利用し、同じ内容を持つノードを効率的に生成したい場合に有用です。

構文(syntax)

1<?php
2
3$document = new Dom\Document();
4$characterData = $document->createTextNode('original text');
5
6// ノードの複製を生成します。
7// $deep パラメータに true を指定すると、子孫ノードも再帰的に複製されます。
8$clonedNode = $characterData->cloneNode(true);
9
10?>

引数(parameters)

bool $deep = false

  • bool $deep = false: クローンする際に、子ノードも含めて再帰的にクローンするかどうかを指定します。true の場合は子ノードもすべてクローンし、false の場合は自身のみをクローンします。

戻り値(return)

Dom\Node

このメソッドは、呼び出し元のノードのディープコピー(子要素もすべて含めて複製したもの)を新しい Dom\Node オブジェクトとして返します。

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