【PHP8.x】replaceChildメソッドの使い方
replaceChildメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
replaceChildメソッドは、呼び出し元のDOMNodeオブジェクトが持つ既存の子ノードを、指定された新しい子ノードに置き換えるメソッドです。DOMCdataSectionクラスはDOMNodeを継承しているため、このメソッドを利用可能です。
具体的には、このメソッドは第一引数に置き換える新しいノード(newChild)を、第二引数に置き換えたい既存の子ノード(oldChild)を受け取ります。newChildとoldChildはどちらもDOMNode型のオブジェクトである必要があります。メソッドが正常に実行されると、呼び出し元のオブジェクトの子ノードリストからoldChildが削除され、その位置にnewChildが挿入されます。置き換えられたoldChildが戻り値として返されます。
DOMCdataSectionオブジェクトは、XMLやHTMLのCDataセクションを表し、内部に他のDOMノードを子として持つことは一般的ではありません。そのため、DOMCdataSectionオブジェクトが「親」として自身の子ノードを置き換える目的でこのメソッドが使われることは稀です。しかし、DOMCdataSectionオブジェクトが他の要素ノードなどの子ノードとして存在する場合に、その親ノードがこのreplaceChildメソッドを使ってDOMCdataSectionノードを別のノードに置き換えることは可能です。
このメソッドを使う際には、置き換え対象であるoldChildが実際に呼び出し元のノードの子ノードであること、またnewChildとoldChildが同じドキュメントに属していることを確認する必要があります。条件が満たされない場合、エラーが発生しますので注意が必要です。
構文(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 を返します。