【PHP8.x】nodeNameプロパティの使い方
nodeNameプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
nodeNameプロパティは、PHPのDOM拡張機能に含まれるDom\Attrクラスに属し、HTMLやXMLドキュメントの要素に付加される「属性」の名前(キー)を保持するプロパティです。Dom\Attrクラスは、WebページやXMLデータの構造をプログラムから操作するための標準的なAPIであるDocument Object Model (DOM) において、<div id="main"> の id のような、要素の追加情報を定義する属性そのものをオブジェクトとして表現するために使用されます。
このnodeNameプロパティは、そのDom\Attrオブジェクトが表す属性の固有の名前を取得するために利用されます。具体的には、もしDom\Attrオブジェクトが<a href="link.html">のhref属性を表しているのであれば、nodeNameプロパティにアクセスすることでhrefという文字列値が得られます。同様に、<img src="image.jpg">のsrc属性を表していればsrcという文字列が返されます。
nodeNameプロパティは読み取り専用であり、その値をプログラムから変更することはできません。取得される値は常に文字列型です。このプロパティは、DOMツリーを走査し、特定の属性を識別したり、属性の種類に基づいて異なる処理を適用したりする際に不可欠な情報を提供します。システムがドキュメント構造を解析し、属性のキー名に基づいて動的に動作を決定するための基本的な手段として広く活用されます。
構文(syntax)
1<?php 2$dom = new DOMDocument(); 3$element = $dom->createElement('myElement'); 4$element->setAttribute('data-custom', 'value'); 5 6// Dom\Attr オブジェクトを取得 7$attribute = $element->attributes->getNamedItem('data-custom'); 8 9// Dom\Attr::nodeName プロパティにアクセス 10$name = $attribute->nodeName; 11 12echo $name; // 出力: data-custom 13?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
string
このプロパティは、属性のローカル名(名前空間プレフィックスがない場合)または完全修飾名(名前空間プレフィックスがある場合)を文字列として返します。
サンプルコード
PHP DOM Attr nodeName を取得する
1<?php 2 3// Dom\Attr::nodeName のサンプルコード 4 5// 新しいDOMDocumentオブジェクトを作成します。 6$dom = new DOMDocument(); 7 8// 新しい属性ノードを作成します。 9$attribute = $dom->createAttribute('class'); 10$attribute->value = 'example'; 11 12// 属性ノードの名前を取得します。 13$nodeName = $attribute->nodeName; 14 15// 結果を出力します。 16echo "属性ノードの名前: " . $nodeName . PHP_EOL; // 出力: 属性ノードの名前: class 17 18?>
このサンプルコードは、PHPのDOM拡張機能におけるDom\AttrクラスのnodeNameプロパティの使い方を示しています。nodeNameプロパティは、属性ノードの名前を表す文字列を返します。
まず、DOMDocumentクラスの新しいインスタンスを作成します。これは、XMLドキュメント全体を表すオブジェクトです。次に、createAttribute()メソッドを使用して、新しい属性ノードを作成します。ここでは、"class"という名前の属性を作成しています。作成した属性ノードには、valueプロパティを使って値を設定します。この例では、"example"という値を設定しています。
そして、nodeNameプロパティにアクセスすることで、属性ノードの名前を取得します。この場合、nodeNameは、属性を作成した際に指定した"class"という文字列を返します。最後に、取得した属性ノードの名前をecho文で出力しています。
nodeNameプロパティは引数を必要とせず、属性ノードの名前を表す文字列を返すシンプルなプロパティです。XMLドキュメントを操作する際に、属性の名前を動的に取得する必要がある場合に役立ちます。この例では、属性名を直接指定していますが、例えば、既存のXMLドキュメントを読み込んで属性を操作する際に、nodeNameプロパティが有効に活用できます。
Dom\Attr::nodeNameは属性ノードの名前(例えばclass属性ならclass)を文字列で取得します。この値は読み取り専用で、変更できません。$attribute->nodeName = 'new_name';のように値を代入しようとしても無視されます。属性ノードを作成する際にcreateAttribute()で指定した名前がそのままnodeNameとして返されることを覚えておきましょう。また、nodeNameは属性がどの要素に属しているかに関わらず、属性自体の名前を返します。