Skip to content

将来の互換性対応: DOMNodeList の安全なインスタンス化 #561

@coderabbitai

Description

@coderabbitai

概要

src/Document.php の Line 150 で new DOMNodeList() を直接インスタンス化していますが、PHP公式ドキュメントでは DOMNodeList はユーザーコードから直接インスタンス化できないとされています。

現状

  • 動作確認済み: PHP 7.4、8.0、8.4 で new DOMNodeList() はエラーなく動作
  • テスト: 全82テストが成功
  • 問題: PHP公式では未サポートの方法のため、将来のバージョンで互換性リスクあり

対応案

以下のいずれかの方法で、文書化された方法で空の DOMNodeList を取得する:

  1. getElementsByTagName('__never_match__') を使用
  2. XPath で //*[false()] のような必ず0件を返す式を評価
  3. createDocumentFragment()->childNodes を使用

関連

備考

PHPStan導入が主目的のPR #3では対応を見送り、将来の改善タスクとして記録。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions