Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】DOMDocumentFragment::isSupported()メソッドの使い方

isSupportedメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

isSupportedメソッドは、特定の機能とバージョンが現在のDocument Object Model(DOM)実装でサポートされているかどうかを確認するメソッドです。このメソッドは、WebページやXML文書の内容をプログラムで操作するための標準的な仕組みであるDOMの一部として提供されており、DOMDocumentFragmentクラスに属します。

isSupportedメソッドを使用することで、たとえば"XML"や"HTML"のような特定のマークアップ言語の機能、あるいはそれらの機能の特定のバージョン(例:"1.0"、"2.0")が、現在のPHP環境のDOM拡張機能で利用可能であるかを判定できます。引数として、確認したい機能の名前を文字列で指定するfeatureと、その機能のバージョンを文字列で指定するversionの二つを受け取ります。

指定された機能とバージョンがサポートされている場合にはtrueを、サポートされていない場合にはfalseを返します。このメソッドは、異なる実行環境におけるDOM機能の互換性を事前に確認するために役立ちます。特定のDOM機能に依存するプログラムを開発する際に、このメソッドを使って機能の可用性をチェックすることで、予期せぬエラーを防ぎ、より堅牢で移植性の高いアプリケーションを構築することが可能です。

構文(syntax)

1<?php
2$doc = new DOMDocument();
3$fragment = $doc->createDocumentFragment();
4
5$isSupported = $fragment->isSupported('XML', '1.0');
6
7var_dump($isSupported);
8?>

引数(parameters)

string $feature, string $version

  • string $feature: サポートされている機能の名前を指定する文字列
  • string $version: 機能のバージョンを指定する文字列

戻り値(return)

bool

このメソッドは、指定された機能がDOMDocumentFragmentでサポートされているかどうかを示すブール値を返します。trueはサポートされていることを、falseはサポートされていないことを示します。

サンプルコード

DOMDocumentFragment::isSupported() PHP サポート状況確認

1<?php
2
3/**
4 * DOMDocumentFragment::isSupported() メソッドの使用例。
5 *
6 * 注意: PHP の DOM 拡張において、DOMDocumentFragment クラスの isSupported() メソッドは、
7 * 常に false を返します。これは W3C DOM の仕様とは異なる挙動です。
8 *
9 * 通常、DOM機能のサポート状況を確認するには DOMDocument::implementation->isSupported() を使用します。
10 * このサンプルは、DOMDocumentFragment インスタンスで isSupported() を呼び出した場合の挙動を示します。
11 *
12 * @param string $feature チェックしたいDOM機能の名前 (例: 'XML', 'HTML', 'Core')
13 * @param string $version チェックしたいDOM機能のバージョン (例: '1.0', '2.0')
14 */
15function checkDomFragmentFeatureSupport(string $feature, string $version): void
16{
17    // DOMDocumentFragment インスタンスを生成します。
18    // このオブジェクトは、XMLやHTMLの断片を表現するために使用されます。
19    $fragment = new DOMDocumentFragment();
20
21    // isSupported メソッドを呼び出し、特定の機能とバージョンがサポートされているかチェックします。
22    // このメソッドは常に false を返すため、以下の条件式は常に false と評価されます。
23    if ($fragment->isSupported($feature, $version)) {
24        echo "DOM機能 '{$feature}' (バージョン {$version}) はサポートされています。\n";
25    } else {
26        echo "DOM機能 '{$feature}' (バージョン {$version}) はサポートされていません。\n";
27        // 初心者向けに、このメソッドの注意点と一般的なアプローチを補足します。
28        echo "補足: DOMDocumentFragment::isSupported() は常に false を返します。\n";
29        echo "実際のDOM機能のサポート確認には、通常 DOMDocument::implementation->isSupported() を使用します。\n";
30    }
31}
32
33// DOM機能のサポート状況をチェックする例。
34// DOMDocumentFragment::isSupported() の性質上、これらの呼び出しは全て
35// 「サポートされていません」という結果と補足メッセージを出力します。
36echo "--- DOMDocumentFragment::isSupported() の結果 ---\n";
37checkDomFragmentFeatureSupport('XML', '1.0');
38checkDomFragmentFeatureSupport('Core', '2.0');
39checkDomFragmentFeatureSupport('HTML', '4.0');
40
41echo "\n--- 参考: DOMDocument::implementation->isSupported() の結果 ---\n";
42// 参考として、一般的に使われるDOM機能のサポートチェック方法を示します。
43$dom = new DOMDocument();
44if ($dom->implementation->isSupported('XML', '1.0')) {
45    echo "DOMDocument::implementation->isSupported('XML', '1.0') はサポートされています。\n";
46} else {
47    echo "DOMDocument::implementation->isSupported('XML', '1.0') はサポートされていません。\n";
48}
49if ($dom->implementation->isSupported('Core', '2.0')) {
50    echo "DOMDocument::implementation->isSupported('Core', '2.0') はサポートされています。\n";
51} else {
52    echo "DOMDocument::implementation->isSupported('Core', '2.0') はサポートされていません。\n";
53}
54
55?>

DOMDocumentFragment::isSupported() メソッドは、PHPのDOM拡張機能の一部で、XMLやHTMLの断片を扱うDOMDocumentFragmentクラスに属します。このメソッドは、引数として指定されたDOM機能の名前($feature)とバージョン($version)が現在のPHP環境でサポートされているかどうかを真偽値(bool)で返すことを意図しています。

しかし、PHP 8を含むPHPのDOM拡張において、このDOMDocumentFragment::isSupported() メソッドは、どのような機能やバージョンが指定されても、常にfalseを返します。これはW3C DOMの標準仕様とは異なるPHP特有の挙動です。

そのため、もし実際のDOM機能のサポート状況を確認したい場合は、通常DOMDocumentクラスのimplementationプロパティが提供するDOMDocument::implementation->isSupported()メソッドを使用することが推奨されます。このサンプルコードは、DOMDocumentFragment::isSupported()が常にfalseを返すというPHPの特定の挙動と、一般的なサポート確認方法との違いを示すことで、PHPのDOM拡張に関する理解を深めることを目的としています。

このサンプルコードで示されているDOMDocumentFragment::isSupported()メソッドは、PHPのDOM拡張において常にfalseを返します。そのため、このメソッドは特定のDOM機能がサポートされているかを実際に確認する目的では利用できませんので、ご注意ください。DOM機能のサポート状況を確認したい場合は、通常、DOMDocumentクラスのimplementationプロパティが提供するisSupported()メソッド(例えば$dom->implementation->isSupported('XML', '1.0')のように)を使用するのが正しい方法です。このサンプルコードは、DOMDocumentFragment::isSupported()が常にfalseを返すというPHP特有の挙動を示すためのものと理解してください。

PHP DOM機能サポートチェック

1<?php
2
3/**
4 * DOMDocumentFragment::isSupported メソッドの使用例を示します。
5 * このメソッドは、特定のDOM機能が指定されたバージョンでサポートされているかを確認します。
6 *
7 * @param string $feature チェックするDOM機能の名前 (例: "XML", "HTML", "Core")
8 * @param string $version チェックするDOMのバージョン (例: "1.0", "2.0")
9 * @return bool 指定された機能とバージョンがサポートされている場合はtrue、そうでない場合はfalse
10 */
11function checkDomFeatureSupport(string $feature, string $version): bool
12{
13    // DOMDocumentFragment インスタンスは、DOMDocument から作成されます。
14    // まずはDOMDocumentのインスタンスを作成します。
15    $dom = new DOMDocument();
16
17    // DOMDocumentFragmentを作成します。
18    // このオブジェクトは、XMLドキュメントのフラグメント(断片)を表します。
19    $fragment = $dom->createDocumentFragment();
20
21    // isSupported メソッドを使って、指定された機能とバージョンがDOM実装でサポートされているかチェックします。
22    // このチェックは、PHPが提供するDOM拡張が特定のDOM仕様をどこまで実装しているかを示します。
23    return $fragment->isSupported($feature, $version);
24}
25
26// --- サンプルコードの実行 ---
27echo "DOM機能のサポート状況をチェックします。\n\n";
28
29// いくつかの代表的なDOM機能とバージョンを試します。
30$featuresToCheck = [
31    // XML 1.0 のサポートチェック
32    ['feature' => 'XML', 'version' => '1.0'],
33    // HTML 1.0 のサポートチェック
34    ['feature' => 'HTML', 'version' => '1.0'],
35    // DOM Level 2 Core (主要機能) のサポートチェック
36    ['feature' => 'Core', 'version' => '2.0'],
37    // DOM Level 2 Traversal (ノードの走査機能) のサポートチェック
38    ['feature' => 'Traversal', 'version' => '2.0'],
39    // 存在しない機能のチェック (通常はサポートされない)
40    ['feature' => 'NonExistentFeature', 'version' => '1.0'],
41];
42
43foreach ($featuresToCheck as $item) {
44    $feature = $item['feature'];
45    $version = $item['version'];
46    $isSupported = checkDomFeatureSupport($feature, $version);
47
48    echo "機能: '{$feature}', バージョン: '{$version}' は ";
49    echo ($isSupported ? "サポートされています。" : "サポートされていません。") . "\n";
50}
51
52?>

PHP 8 の DOMDocumentFragment::isSupported メソッドは、現在実行中のPHP環境において、特定のDOM(Document Object Model)機能が指定されたバージョンでサポートされているかを確認するために使用されます。DOMは、HTMLやXMLドキュメントの構造を表現し、プログラムからその内容や構造を操作するための標準的なインターフェースです。

このメソッドは二つの引数を取ります。一つ目の $feature は確認したいDOM機能の名前を文字列で指定し、例えば"XML"(XML関連機能)や"HTML"(HTML関連機能)、"Core"(DOMの主要機能)といった値が入ります。二つ目の $version は、その機能が属するDOM仕様のバージョン番号を文字列で指定し、例えば"1.0"や"2.0"といった値を使用します。

メソッドの戻り値は bool 型です。指定された機能とバージョンがPHPのDOM拡張によってサポートされている場合は true を返し、サポートされていない場合は false を返します。

サンプルコードでは、まず DOMDocument インスタンスを作成し、そこから createDocumentFragment() メソッドを使って DOMDocumentFragment オブジェクトを生成しています。このフラグメントオブジェクトに対して isSupported メソッドを呼び出すことで、"XML"の"1.0"や"Core"の"2.0"など、様々なDOM機能とバージョンのサポート状況を具体的にチェックしています。このメソッドは、特定のDOM操作を実行する前に、その機能が利用可能であるかをプログラムで事前に判断し、コードの互換性や安定性を確保する際に役立ちます。

このDOMDocumentFragment::isSupportedメソッドは、PHPのDOM拡張が特定のDOM機能とバージョンをサポートしているかを確認するものです。この機能は、ウェブブラウザのDOMサポート状況を直接チェックするものではない点にご注意ください。引数$feature$versionには、DOM仕様で定められた正確な文字列(例えば「XML」や「1.0」)を指定する必要があります。大文字小文字や表記が異なると、意図しない結果を返すことがあります。サンプルコードでは、まずDOMDocumentを作成し、そこからDOMDocumentFragmentを生成していますが、isSupportedはこのDOM実装自体の機能確認に利用します。このメソッドはPHPが提供するDOM機能の範囲を把握する際に役立ちます。

関連コンテンツ

関連プログラミング言語