Ho provato ad appendere un nodo DOM restituito da un metodo di una classe ad un altro nodo generato da un'altra classe, e ottengo sempre lo stesso errore.

Dipende forse dal fatto che i nodi DOM non hanno senso svincolati dal DOMdocument su cui vengono creati?

Riporto un caso semplificativo:

Codice PHP:

class body {
    private 
$body;
    
    public function 
__construct() { // crea l'oggetto body;
        
$doc = new DOMdocument();
        
$body $doc->createElement("body");
        
$div $doc->createElement("div");
        
$doc->appendChild($body);
        
$div->appendChild($doc->createTextNode("Io sono il div."));
        
$body->appendChild($div);
        
$this->body $body;
    }
    public function 
getBody() { // restituisce il body creato come oggetto DOM;
        
return $this->body;
    }
    public function 
append($node) { // appende un nodo al body creato:
        
$body $this->body;
        
$body->appendChild($node);
    }
}

class 
paragraph {
    private 
$par;
    
    public function 
__construct() { // crea l'oggetto p;
        
$doc = new DOMdocument();
        
$par $doc->createElement("p");
        
$par->appendChild($doc->createTextNode("Io sono il paragrafo."));
        
$doc->appendChild($par);
        
$this->par $par;
    }
    public function 
getParagraph() { // restituisce il paragrafo creato come oggetto DOM;
        
return $this->par;
    }
}

//creo l'elemento body:
$b = new body();
// creo l'elemento p
$p = new paragraph();

// appendo l'elemento all'elemento body, qui da errore:
$b->append($p->getParagraph()); 
Da cosa dipende l'errato append?