(PHP 5 >= 5.2.0, PHP 7)
DOMDocument::registerNodeClass — Регистрация расширенного класса, используемого для создания базового типа узлов
$baseclass
   , string $extendedclass
   )Этот метод позволяет зарегистрировать свой собственный расширенный DOM класс, чтобы впоследствии использовать его в PHP DOM расширении.
Этот метод не входит в стандарт DOM.
baseclassDOM класс, который будет расширен. Список таких классов можно увидеть во введении.
extendedclass
       Имя расширенного класса. Если передать NULL, будут удалены все
       ранее зарегистрированные классы, расширяющие данный базовый класс
       baseclass.
      
   Возвращает TRUE в случае успешного завершения  или FALSE в случае возникновения ошибки.
  
| Версия | Описание | 
|---|---|
| 5.2.2 | В версиях до 5.2.2 ранее зарегистрированный расширенный класс extendedclassдолжен быть исключен из регистрации,
        прежде чем регистрировать новый класс, расширяющий тот же базовый классbaseclass. | 
Пример #1 Добавление нового метода в класс DOMElement для упрощения кода
<?php
class myElement extends DOMElement {
   function appendElement($name) { 
      return $this->appendChild(new myElement($name));
   }
}
class myDocument extends DOMDocument {
   function setRoot($name) { 
      return $this->appendChild(new myElement($name));
   }
}
$doc = new myDocument();
$doc->registerNodeClass('DOMElement', 'myElement');
// С этих пор добавление одного элемента к другому 
// требует всего одного вызова метода!
$root = $doc->setRoot('root');
$child = $root->appendElement('child');
$child->setAttribute('foo', 'bar');
echo $doc->saveXML();
?>
Результат выполнения данного примера:
<?xml version="1.0"?> <root><child foo="bar"/></root>
Пример #2 Извлечение элементов в виде пользовательского класса
<?php
class myElement extends DOMElement {
    public function __toString() {
        return $this->nodeValue;
    }
}
$doc = new DOMDocument;
$doc->loadXML("<root><element><child>text in child</child></element></root>");
$doc->registerNodeClass("DOMElement", "myElement");
$element = $doc->getElementsByTagName("child")->item(0);
var_dump(get_class($element));
// Воспользуемся __toString методом..
echo $element;
?>
Результат выполнения данного примера:
string(9) "myElement" text in child
Пример #3 Получение имени документа-владельца узла
Когда создается экземпляр расширенного класса DOMDocument, свойство ownerDocument будет ссылаться на создаваемый объект. Это значит, что нет необходимости (а фактически это невозможно) использовать DOMDocument::registerNodeClass() применительно к DOMDocument.
<?php
class myDOMDocument extends DOMDocument {
}
class myOtherDOMDocument extends DOMDocument {
}
// Создаем myDOMDocument с некоторым XML содержимым
$doc = new myDOMDocument;
$doc->loadXML("<root><element><child>text in child</child></element></root>");
$child = $doc->getElementsByTagName("child")->item(0);
// Текущий владелец узла - myDOMDocument 
var_dump(get_class($child->ownerDocument));
// Импортируем узел из myDOMDocument 
$newdoc = new myOtherDOMDocument;
$child = $newdoc->importNode($child);
// Новый владелец узла изменился на myOtherDOMDocument 
var_dump(get_class($child->ownerDocument));
?>
Результат выполнения данного примера:
string(13) "myDOMDocument" string(18) "myOtherDOMDocument"