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?