Как добавить элементы в DOMNodeList в PHP?

Есть ли способ создать собственный DOMNodeList? Например:

$doc = new DOMDocument(); $elem = $doc->createElement('div'); $nodeList = new DOMNodeList; $nodeList->addItem($elem); // ? 

Моя идея – расширить класс DOMDocument, добавив некоторые полезные методы, которые возвращают данные как DOMNodeList.

Можно ли это сделать, не написав мою собственную версию класса DOMNodeList?

Вы не можете добавлять элементы в DOMNodeList через открытый интерфейс . Однако DOMNodeLists являются живыми коллекциями при подключении к дереву DOM, поэтому добавление дочернего элемента в DOMElement добавит элемент в дочернюю коллекцию этого элемента (который является списком DOMNodeList):

 $doc = new DOMDocument(); $nodelist = $doc->childNodes; // a DOMNodeList echo $nodelist->length; // 0 $elem = $doc->createElement('div'); $doc->appendChild($elem); echo $nodelist->length; // 1 

Вы говорите, что хотите добавить «некоторые полезные методы, которые возвращают данные как DOMNodeList». В контексте DOMDocument это то, что делает XPath . Он позволяет запрашивать все узлы в документе и возвращать их в DOMNodeList. Возможно, это то, что вы ищете.