【PHP8.x】parentNodeプロパティの使い方

parentNodeプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

parentNodeプロパティはDOMAttrクラスに属するプロパティです。このプロパティは、XMLやHTMLドキュメントの構造を表すDOM(Document Object Model)において、属性ノード(DOMAttrオブジェクト)の親ノードを保持する目的で定義されています。

一般的なDOMノード、例えば要素ノードやテキストノードでは、parentNodeプロパティはそのノードの直接の親ノード、つまりそのノードを含んでいる上位のノードを返します。しかし、DOMAttrクラスのインスタンスである属性ノードに関しては、この挙動が異なります。DOMの仕様上、属性ノードは要素の直接の子として扱われるのではなく、要素に「関連付けられる」特別なノードであるため、通常の意味での親ノードという概念が適用されません。

したがって、DOMAttrオブジェクトのparentNodeプロパティにアクセスしても、常にNULLが返されます。これは、プログラミング上のエラーや予期せぬ挙動ではなく、DOMの設計に基づく正しい結果です。もし、ある属性がどの要素に属しているのか、つまりその属性を「所有している」要素を知りたい場合には、parentNodeプロパティではなく、DOMAttr::ownerElementプロパティを使用してください。ownerElementプロパティは、その属性が関連付けられているDOMElementオブジェクトを正確に返します。この違いを理解することは、PHPでDOMを効果的に操作する上で非常に重要です。

構文(syntax)

1<?php
2$dom = new DOMDocument();
3$element = $dom->createElement('example');
4$attr = $dom->createAttribute('id');
5$element->appendChild($attr);
6
7// DOMAttr オブジェクトを取得
8$domAttr = $element->attributes->getNamedItem('id');
9
10// DOMAttr::parentNode プロパティにアクセスする構文
11$parent = $domAttr->parentNode;
12?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?DOMNode

このプロパティは、この属性ノードが属する要素ノード、または親となるDOMNodeオブジェクトを返します。

【PHP8.x】parentNodeプロパティの使い方 | いっしー@Webエンジニア