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

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

作成日: 更新日:

基本的な使い方

prefixプロパティは、DOMツリー内のノードが持つ名前空間のプレフィックスを保持するプロパティです。DOMCharacterDataクラスは、XMLやHTMLドキュメント内で文字データを持つノード、例えばテキストノード(DOMText)、コメントノード(DOMComment)、CDATAセクションノード(DOMCdataSection)などの基底クラスとなります。このプロパティは、これらのノードについて名前空間プレフィックスを取得する際に使用されます。

XMLドキュメントでは、複数の異なるXML語彙を区別するために名前空間が利用され、その際に要素名や属性名の前に「prefix:」のような接頭辞が付与されることがあります。しかし、DOMCharacterDataを継承するノードは、要素や属性のように名前空間を持つものではなく、純粋な文字データのみを保持します。そのため、これらの文字データノードは通常、名前空間のプレフィックスを持っていません。結果として、DOMCharacterDataクラスのインスタンスに対してこのprefixプロパティにアクセスした場合、ほとんどの場合「null」が返されます。これにより、当該ノードが名前空間プレフィックスを持っていないことをプログラムで明確に確認できるのです。

構文(syntax)

1<?php
2
3$xmlString = <<<XML
4<?xml version="1.0" encoding="UTF-8"?>
5<doc xmlns:n="urn:example:ns">
6  <n:elem>Some text</n:elem>
7</doc>
8XML;
9
10$dom = new DOMDocument();
11$dom->loadXML($xmlString);
12
13// <n:elem>要素内のテキストノード(DOMCharacterDataのサブクラス)を取得します
14$characterData = $dom->getElementsByTagName('elem')->item(0)->firstChild;
15
16// DOMCharacterDataオブジェクトのprefixプロパティ(読み取り専用)にアクセスします
17$prefixValue = $characterData->prefix;
18
19// テキストノード自体はプレフィックスを持たないため、結果はnullになります
20var_dump($prefixValue);
21
22?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

string

DOMCharacterDataオブジェクトの接頭辞(prefix)を返します。これは、ノードの命名空間接頭辞を表します。

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