Jag försöker använda mig utav en del PHP kod som jag själv inte är författaren till, men det är dock skrivet för PHP 4.x och inte 5.x som jag kör på min server.
Vad jag har för problem är nämligen att jag får "Call to a member function add_child() on a non-object".
Functionen add_child ligger så här
class xml_tree_node_c extends xml_node_c {
.........
.........
function &add_child (&$xml_node) {
$this->_children[] = $xml_node;
return $this->_children;
}
........
........
}
Denna funktion kallas från en annan funktion som ligger utanför klassen xml_tree_node_c på detta vis
function text_to_xml ($xml_text) {
......
......
$stack[$stackpos] =
& $stack[$stackpos-1]->add_child (new xml_tree_node_c ($val["tag"],
@$val["attributes"]));
.....
.....
}
Arrayen $stack ser ut så här
Array
(
[0] => xml_tree_node_c Object
(
[_name] => SyncML
[_children] => Array
(
[0] => xml_tree_node_c Object
(
[_name] => SyncHdr
[_children] => Array
(
)
[_attribs] =>
)
)
[_attribs] => Array
(
[xmlns] => syncml:SYNCML1.2
)
)
[1] => Array
(
[0] => xml_tree_node_c Object
(
[_name] => SyncHdr
[_children] => Array
(
)
[_attribs] =>
)
)
)
Vad jag har fattat nu så är problemet att functionen add_child kallas på utan att php har någon riktig referens på vart den finns, eftersom den ligger i en klass. Dock vet jag inte hur jag skall lösa detta på...
Hoppas att någon kan visa mig hur jag skall göra.
Om någon dessutom vet någon riktigt bra dokumentation över hur man skriver ordentlig Object Orienterad kod så vore jag jätta glad med, eller kan rekomdendera någon bra bok i ämnet. Då jag uppenbarligen behöver lära mig lite mer om det.