【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オブジェクトを返します。