【PHP8.x】firstChildプロパティの使い方
firstChildプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
firstChildプロパティは、Dom\CharacterDataクラスに属し、そのノードの最初の子ノードを保持するプロパティです。Dom\CharacterDataクラスは、PHPのDOM拡張機能において、XMLやHTMLドキュメント内で文字データを直接保持するノードの基底クラスとして定義されています。具体的には、テキストノード(要素間の文字列)、コメントノード(<!-- ... -->)、そしてCDATAセクションノード(<![CDATA[ ... ]]>)などがこのクラスのサブタイプにあたります。
一般的なDOMノード、例えば要素ノード(<div>や<p>など)の場合、firstChildプロパティは、そのノードが持つ子ノードのリストの中から、最初に位置する子ノードへの参照を返します。これにより、ドキュメントツリー構造をたどり、特定のノードの子要素やテキストにアクセスする際に利用されます。もし対象のノードに子ノードが一つも存在しない場合は、このプロパティはnullを返します。
しかし、Dom\CharacterDataクラスのインスタンスであるテキストノードやコメントノードは、それ自体が直接文字データの内容を保持する特殊なノードです。これらのノードはDOMの構造上、それ自身の内部にさらに別の子ノードを持つことはありません。例えば、「Hello World」というテキストノードは、その文字列自体がノードの「値」であり、その文字列の中に別のDOMノードが埋め込まれているわけではないため、子ノードが存在しないという特性を持っています。
したがって、Dom\CharacterDataクラスのオブジェクトに対してfirstChildプロパティにアクセスした場合、結果は常にnullとなります。これは、Dom\CharacterData型のノードがDOMツリーにおいて「葉ノード」(末端ノード)として振る舞い、子ノードを持たないという設計上の特性によるものです。これらのノードが保持する実際の文字データにアクセスするには、firstChildプロパティではなく、dataプロパティやnodeValueプロパティを使用する必要があることに注意してください。
構文(syntax)
1<?php 2 3$dom = new DOMDocument(); 4$characterDataNode = $dom->createTextNode("Sample text content."); 5 6// Dom\CharacterData::firstChild プロパティにアクセス 7// CharacterData ノードは子ノードを持たないため、このプロパティは常に null を返します。 8$first = $characterDataNode->firstChild; 9 10var_dump($first); 11 12?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
Dom\Node|null
このプロパティは、現在のノードの最初の子ノードを表す Dom\Node オブジェクト、または子ノードが存在しない場合は null を返します。