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

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

作成日: 更新日:

基本的な使い方

replaceChildメソッドは、呼び出し元のDOMNodeオブジェクトが持つ既存の子ノードを、指定された新しい子ノードに置き換えるメソッドです。DOMCdataSectionクラスはDOMNodeを継承しているため、このメソッドを利用可能です。

具体的には、このメソッドは第一引数に置き換える新しいノード(newChild)を、第二引数に置き換えたい既存の子ノード(oldChild)を受け取ります。newChildoldChildはどちらもDOMNode型のオブジェクトである必要があります。メソッドが正常に実行されると、呼び出し元のオブジェクトの子ノードリストからoldChildが削除され、その位置にnewChildが挿入されます。置き換えられたoldChildが戻り値として返されます。

DOMCdataSectionオブジェクトは、XMLやHTMLのCDataセクションを表し、内部に他のDOMノードを子として持つことは一般的ではありません。そのため、DOMCdataSectionオブジェクトが「親」として自身の子ノードを置き換える目的でこのメソッドが使われることは稀です。しかし、DOMCdataSectionオブジェクトが他の要素ノードなどの子ノードとして存在する場合に、その親ノードがこのreplaceChildメソッドを使ってDOMCdataSectionノードを別のノードに置き換えることは可能です。

このメソッドを使う際には、置き換え対象であるoldChildが実際に呼び出し元のノードの子ノードであること、またnewChildoldChildが同じドキュメントに属していることを確認する必要があります。条件が満たされない場合、エラーが発生しますので注意が必要です。

構文(syntax)

1<?php
2// DOMDocumentと親要素を作成
3$dom = new DOMDocument();
4$parentElement = $dom->createElement('parentElement');
5
6// 置換される古い子ノード(DOMCdataSection)を作成して追加
7$oldChild = $dom->createCDATASection('古いデータ');
8$parentElement->appendChild($oldChild);
9
10// 新しい子ノード(DOMCdataSection)を作成
11$newChild = $dom->createCDATASection('新しいデータ');
12
13// 親要素のコンテキストで、古い子ノードを新しい子ノードに置き換える
14// DOMNode::replaceChild(DOMNode $new, DOMNode $old): DOMNode|false
15$replacedNode = $parentElement->replaceChild($newChild, $oldChild);
16?>

引数(parameters)

DOMNode $newnode, DOMNode $oldnode

  • DOMNode $newnode: 新しく挿入されるノード
  • DOMNode $oldnode: 置き換えられる既存のノード

戻り値(return)

DOMNode|false

指定されたノードを、新しいノードで置き換えた場合、新しいノードを返します。置き換えに失敗した場合は false を返します。

関連コンテンツ

関連プログラミング言語