So che ciò che sto per fare sarà fatto già in mille modi ma lo considero un esercizio per capire come funziona php in stile oop.
Voglio creare una classe (semplice) che mi rappresenti un documenti xml, che mi consenta di aggiungere elementi e di stamparli (è una cosa poco più che didattica come vedete) ed ho un pò di problemi.
Uso php 4.3 (non posso usarne altri) e l'estensione dom
Ho scritto questo codice:
codice:
class xmlDoc extends DomDocument {
var $strAttrEncoding;
var $objDoc;
function xmlDoc($strVers='1.0',$strEnc="UTF-8"){
$this->strAttrEncoding=$strEnc;
$this->objDoc=domxml_new_doc($strVers);
}
function addNode($strNodeName,$strNodeContent){
$objNode=$this->objDoc->create_element($strNodeName);
$objNewNode=$this->objDoc->append_child($objNode);
// qui ci va qualcosa per inserire anche il testo del nodo
}
function printDocument(){
echo "struttura documento
";
$this->objDoc->html_dump_mem();
}
}
per istanziare la classe e popolare il documento uso:
$xd= new xmlDoc("2.0");
$xd->addNode("saluto","ciao");
$xd->printDocument();
Allora, ho fatto il test anche con più nodi ma non mi stampa mai nulla (nn capisco quindi se il problema sia in "input" o in "output", inoltre riesco a stampare i valori degli attributi.
Sappiate che di php oop ne capisco poco (mai usato o quasi) e quindi perdonate i miei errori grossolani.
La parte di codice in rosso che indica l'ereditarietà è necessaria? E' come dire derivo la classe da una domdocument in modo che erediti tutti i suoi metodi per essere usata... Tuttavia in questo caso potrei omettere un attributo di dipo domdocument? Inoltre non son tanto sicuro che la sintassi per il reference delle variabili all'interno dei metodi sia giusta però se non uso $this-> qualcosa e chiamo direttamente il nome del metodo (dovrebbe essere corretto se eredito giusto?) ricevo un errore di funzione non definita.
Come vedete ho le idee un pò confuse, vi ringrazierei se mi deste qualche dritta!