【PHP8.x】classNameプロパティの使い方
classNameプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
classNameプロパティは、HTML要素のclass属性の値を保持するプロパティです。PHPのDOM拡張機能に属し、HTMLやXMLドキュメント内の要素をオブジェクトとして扱うDOMElementクラスの一部です。DOMElementクラスは、<p>や<div>といった個々のHTML要素を表現し、それらの属性や内容をプログラムから操作することを可能にします。
このclassNameプロパティは、特にHTML要素に対してCSSのスタイルを適用するために使われるclass属性の値を管理するために利用されます。要素に設定されているCSSクラス名を文字列として取得したり、新しいクラス名を要素に設定したりする際に使用できます。例えば、あるHTML要素にclass="primary-button large"という属性が設定されている場合、DOMElementオブジェクトのclassNameプロパティにアクセスすると、文字列"primary-button large"が得られます。
また、このプロパティに新しい文字列を代入することで、要素のclass属性の値を変更できます。複数のクラスを適用したい場合は、"class1 class2"のように半角スペースで区切って設定します。例えば、$element->className = "active highlighted";と設定すると、その要素にはactiveとhighlightedという二つのCSSクラスが適用され、関連するスタイルが反映されます。この機能は、ウェブページの見た目を動的に変更したり、特定の要素の振る舞いを制御したりする際に非常に役立ちます。
構文(syntax)
1<?php 2 3$dom = new DOMDocument('1.0', 'utf-8'); 4$element = $dom->createElement('div'); 5$element->className = 'example-class'; // クラス名を設定 6$dom->appendChild($element); 7 8echo $element->className; // 設定されたクラス名を取得して表示 9 10?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
string
DOMElement オブジェクトのクラス名を文字列で返します。
サンプルコード
DOMElementのclassNameプロパティでクラス名を取得する
1<?php 2 3// DOMDocument を作成し、HTML 文字列をロードします。 4$dom = new DOMDocument(); 5$dom->loadHTML('<div class="myClass anotherClass">Hello</div>'); 6 7// ルート要素を取得します。 8$element = $dom->documentElement; 9 10// className プロパティを使用して、要素のクラス名を取得します。 11if ($element instanceof DOMElement) { 12 $className = $element->className; 13 14 // クラス名を出力します。 15 echo $className . PHP_EOL; // 出力: myClass anotherClass 16} 17 18?>
このサンプルコードは、PHPのDOMElementクラスにおけるclassNameプロパティの使用例を示しています。classNameプロパティは、DOMElementが持つHTML要素のclass属性の値を取得するために使用されます。
まず、DOMDocumentクラスのインスタンスを作成し、loadHTMLメソッドを使ってHTML文字列を読み込みます。次に、documentElementプロパティでHTMLドキュメントのルート要素を取得します。この例では、ルート要素の中のdiv要素が対象となります。
取得した要素がDOMElementのインスタンスであることを確認した後、classNameプロパティにアクセスします。classNameプロパティは引数を取らず、文字列型の値を返します。この戻り値は、HTML要素のclass属性に設定されている文字列をそのまま表しています。複数のクラス名がスペースで区切られている場合、それら全てが連結された文字列として返されます。
最後に、取得したクラス名をecho文で出力しています。サンプルコードを実行すると、div要素のclass属性である "myClass anotherClass" がターミナルに表示されます。PHP_EOLは改行コードを意味し、出力結果を見やすくするために追加しています。この例では、HTML要素からクラス名を文字列として取得する方法を簡潔に示しています。
DOMElement の className プロパティは、要素の class 属性の値を文字列として取得します。HTMLを扱う場合、loadHTML()で読み込んだ後にdocumentElementから要素を取得する必要があります。取得した要素がDOMElementのインスタンスであることを instanceof で確認してからclassNameプロパティにアクセスしてください。classNameプロパティは、要素に設定されている全てのクラス名をスペース区切りで返します。もしクラス名が設定されていない場合は空文字列が返ります。このプロパティは読み取り専用で、直接値を変更することはできません。
PHP DOMElement className プロパティでクラス名を取得する
1<?php 2 3// DOMElement クラスの className プロパティを使用して、要素のクラス名を取得する例 4 5// XML 文字列をロード 6$xmlString = '<root><element class="my-class another-class">Content</element></root>'; 7$dom = new DOMDocument(); 8$dom->loadXML($xmlString); 9 10// element 要素を取得 11$element = $dom->getElementsByTagName('element')->item(0); 12 13// className プロパティを使用してクラス名を取得 14if ($element instanceof DOMElement) { 15 $className = $element->className; 16 17 // クラス名を出力 18 echo "Class name: " . $className . PHP_EOL; // 出力: Class name: my-class another-class 19} else { 20 echo "Element not found." . PHP_EOL; 21} 22 23?>
このサンプルコードは、PHPのDOMElementクラスにおけるclassNameプロパティの使用例を示しています。classNameプロパティは、DOM要素が持つクラス属性の値(クラス名)を文字列として取得するために使用されます。
まず、サンプルコードではXML形式の文字列をDOMDocumentオブジェクトに読み込みます。そして、getElementsByTagNameメソッドを用いて、特定要素(ここでは'element'タグ)を取得しています。
取得した要素がDOMElementのインスタンスであるかを確認した後、classNameプロパティにアクセスすることで、その要素に設定されているクラス名を取得します。classNameプロパティは引数を必要とせず、文字列型の値を返します。複数のクラスが設定されている場合、それらはスペースで区切られた文字列として返されます。
サンプルコードでは、取得したクラス名をecho文で出力しています。上記の例では、element要素にclass="my-class another-class"が設定されているため、「Class name: my-class another-class」という文字列が出力されます。もし要素が見つからない場合や、要素がDOMElementのインスタンスでない場合は、エラーメッセージが表示されます。このコードは、XMLドキュメントから要素のクラス名を取得する基本的な方法を理解するのに役立ちます。
DOMElementのclassNameプロパティは、HTMLやXML要素のclass属性の値を文字列として取得します。このプロパティは読み取り専用で、値を直接変更することはできません。クラス名を変更するには、setAttribute('class', '新しいクラス名')を使用する必要があります。また、getElementsByTagName()はDOMNodeListを返すため、item(0)で最初の要素を取得している点に注意してください。要素が存在しない場合はitem(0)はnullを返すため、instanceof DOMElementで型チェックを行うことで、安全にclassNameプロパティにアクセスできます。