【PHP8.x】DOMEntityReference::isSupported()メソッドの使い方
isSupportedメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
isSupportedメソッドは、このDOMエンティティ参照ノードが指定された機能をサポートしているかどうかを判定するために使用するメソッドです。第1引数には確認したい機能の名前を文字列で、第2引数にはその機能のバージョンを文字列で指定します。このメソッドは、理論上は指定された機能が実装でサポートされている場合はtrueを、そうでない場合はfalseを返します。しかしながら、PHPのDOM拡張機能におけるこのメソッドの実装は、DOM Level 3 Coreの仕様に準拠しており、どのような引数を渡した場合でも常にfalseを返すように設計されています。これは、特定の機能が利用可能かどうかをこのメソッドで判定するのではなく、アプリケーションが直接機能の有無を確認すべきであるという考えに基づいています。したがって、PHPでDOM操作を行う際に、このメソッドを使って機能のサポート状況を確認しようとしても、期待した結果は得られず、常にfalseが返却される点に注意が必要です。
構文(syntax)
1<?php 2// DTDを含むXML文字列 3$xmlString = <<<XML 4<?xml version="1.0" encoding="utf-8"?> 5<!DOCTYPE doc [ 6 <!ENTITY writer "John Doe"> 7]> 8<doc> 9 <author>&writer;</author> 10</doc> 11XML; 12 13// DOMDocumentオブジェクトを作成 14$doc = new DOMDocument(); 15 16// DTDを解釈してエンティティ参照をノードとして保持するために、 17// LIBXML_NOENTオプションを指定してXMLを読み込みます。 18$doc->loadXML($xmlString, LIBXML_NOENT); 19 20// <author>要素の子ノードであるエンティティ参照ノードを取得 21$entityRef = $doc->getElementsByTagName('author')->item(0)->firstChild; 22 23// 指定した機能とバージョンがこのノードでサポートされているかを判定します。 24// このメソッドはPHP 8.0.0で非推奨になりました。 25$isSupported = $entityRef->isSupported('XML', '1.0'); 26 27// 結果 (bool) を出力します。 28var_dump($isSupported);
引数(parameters)
string $feature, string $version
- string $feature: サポートされている機能を示す文字列
- string $version: 機能のバージョンを示す文字列
戻り値(return)
bool
このメソッドは、指定されたエンティティ参照がDOMでサポートされているかどうかを真偽値(trueまたはfalse)で返します。