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

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

作成日: 更新日:

基本的な使い方

lastChildプロパティは、DOMAttrクラスのインスタンスが保持するプロパティです。DOMAttrクラスは、HTMLやXMLドキュメントにおいて、要素の属性(例えば、<a href="...">タグのhref属性や、<img src="...">タグのsrc属性)を表すために使用されます。

一般的に、DOM(Document Object Model)ツリー内のノードは、テキストノードや他の要素ノードといった子ノードを持つことができ、lastChildプロパティは、そのノードが持つ最後の子ノードにアクセスするために利用されます。これは、例えば親要素から最後の子要素やテキストノードを取得する際などに用いられることが多いです。

しかし、DOMの仕様では、属性ノード(DOMAttrオブジェクトが表すもの)は子ノードを持つことができないと定義されています。属性ノードは、要素の特定のプロパティや設定値を表すものであり、その値を直接保持しますが、構造的に他のノードを子として持つことはありません。

このため、DOMAttrクラスのlastChildプロパティにアクセスしても、常にnull値が返されます。これは、属性ノードがDOMツリーの階層構造において子ノードを持たないという、DOMの基本的な設計原則によるものです。したがって、DOMAttrオブジェクトから子ノードを取得しようとこのプロパティを使用しても、常に空の結果が返されることを理解しておく必要があります。属性の値を取得する際には、valueプロパティなど、用途に応じた別のプロパティを使用することが適切です。

構文(syntax)

1<?php
2$dom = new DOMDocument();
3
4// 属性ノードを作成し、値を設定します
5$attr = $dom->createAttribute('item-id');
6$attr->nodeValue = 'A123';
7
8// DOMAttrオブジェクトのlastChildプロパティにアクセスします
9// DOMAttrの場合、lastChildは通常、その値を示すDOMTextノードになります
10$lastChildNode = $attr->lastChild;
11
12// lastChildNodeが存在すれば、そのノードの値(属性の値)を表示します
13if ($lastChildNode) {
14    echo $lastChildNode->nodeValue;
15} else {
16    echo "子ノードがありません。";
17}
18?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?DOMNode

DOMAttrオブジェクトの最後の子ノードを返します。子ノードがない場合はnullを返します。

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