|
| OOP og xml_set_element_handler Fra : Niels Andersen |
Dato : 05-09-02 09:02 |
|
Jeg har lavet en stump kode til at parse en xml-fil, og det virker fint. Men
jeg vil gerne lave det til en klasse, og så kommer problemerne.
I xml_set_element_handler skal parameter 2 og 3 være navnet på en
callback-funktion. Nemt nok. Men hvis man bruger OOP, så skal det være "an
array containing an object reference and a method name".
Jeg kan godt få den til at kalde den rette funktion, ved at henvise til
klassen jeg arbejder på. Men så rammer jeg et andet namespace, og det går
ikke. Jeg er nødt til at henvise til "$this". Men det kan jeg ikke få den
til.
Tre forsøg og deres fejlmeddelelser:
xml_set_element_handler($xml_parser, array('this','startElement'),
array('this','endElement'));
Warning: Unable to call handler
xml_set_element_handler($xml_parser, array($this,'startElement'),
array($this,'endElement'));
Warning: Unable to call handler stdClass::startElement()
xml_set_element_handler($xml_parser, array(&$this,'startElement'),
array(&$this,'endElement'));
Warning: Unable to call handler stdClass::startElement()
Linjen der giver selve fejlen er selvfølgelig den med xml_parse().
Nogen forslag til hvad der er galt? :)
--
Mvh.
Niels Andersen
(la nels. anersyn.)
| |
Jacob Bunk Nielsen (05-09-2002)
| Kommentar Fra : Jacob Bunk Nielsen |
Dato : 05-09-02 12:47 |
|
Niels Andersen <niels-usenet@myplace.dk> writes:
> Jeg kan godt få den til at kalde den rette funktion, ved at henvise til
> klassen jeg arbejder på. Men så rammer jeg et andet namespace, og det går
> ikke. Jeg er nødt til at henvise til "$this". Men det kan jeg ikke få den
> til.
Er det rigtigt forstået at det så ikke duer når du gør:
xml_set_element_handler($xml_parser,
array(&$this,'MinKlasse::startElement'),
array(&$this,'MinKlasse::endElement'));
?
For det er umiddelbart mit eneste foreslag, men så er det at du rammer
det forkert namespace, eller hvad?
--
Jacob - www.bunk.cc
Science may someday discover what faith has always known.
| |
Niels Andersen (05-09-2002)
| Kommentar Fra : Niels Andersen |
Dato : 05-09-02 12:51 |
|
Jacob Bunk Nielsen wrote in <spamdrop+m3elc83bhh.fsf@paven.bunk.cc>:
> Er det rigtigt forstået at det så ikke duer når du gør:
> xml_set_element_handler($xml_parser,
> array(&$this,'MinKlasse::startElement'),
> array(&$this,'MinKlasse::endElement'));
> ?
>
> For det er umiddelbart mit eneste foreslag, men så er det at du rammer
> det forkert namespace, eller hvad?
Unable to call handler stdClass::MinKlasse::startElement()
(Jeg skriver selvfølgelig klassens navn i stedet for "MinKlasse")
--
Mvh.
Niels Andersen
(la nels. anersyn.)
| |
Jacob Bunk Nielsen (05-09-2002)
| Kommentar Fra : Jacob Bunk Nielsen |
Dato : 05-09-02 13:12 |
|
Niels Andersen <niels-usenet@myplace.dk> writes:
> Unable to call handler stdClass::MinKlasse::startElement()
Så må jeg desværre skuffe og sige at jeg ikke kender svaret :-<
Jeg har i øvrigt flere gange selv bandet over PHP's objekt-system, som
jeg synes er enormt mangelfuldt sammenlignet med det jeg kender fra
Java og C++. Det virker bare som om det ikke rigtig er modent
endnu på mange punkter :-/
--
Jacob - www.bunk.cc
If in doubt, mumble.
| |
Johan Holst Nielsen (05-09-2002)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 05-09-02 13:15 |
|
> Så må jeg desværre skuffe og sige at jeg ikke kender svaret :-<
>
> Jeg har i øvrigt flere gange selv bandet over PHP's objekt-system, som
> jeg synes er enormt mangelfuldt sammenlignet med det jeg kender fra
> Java og C++. Det virker bare som om det ikke rigtig er modent
> endnu på mange punkter :-/
Er meget enig i det...
Fandt faktisk en side en dag (tror den var tysk?) hvor en havde
beskrevet hvorledes hans ønskede PHP5 skulle være. Men private og public
classes osv... :)
Kunne være dejligt hvis dette kunne ske en dag...
mvh
Johan
| |
Jonas Koch Bentzen (07-09-2002)
| Kommentar Fra : Jonas Koch Bentzen |
Dato : 07-09-02 10:00 |
|
Johan Holst Nielsen wrote:
>
> Fandt faktisk en side en dag (tror den var tysk?) hvor en havde
> beskrevet hvorledes hans ønskede PHP5 skulle være. Men private og public
> classes osv... :)
Noget af det kommer vist allerede i PHP 4.3.0.
| |
Jacob Bunk Nielsen (05-09-2002)
| Kommentar Fra : Jacob Bunk Nielsen |
Dato : 05-09-02 13:28 |
|
Johan Holst Nielsen <johan@weknowthewayout.com> writes:
> Fandt faktisk en side en dag (tror den var tysk?) hvor en havde
> beskrevet hvorledes hans ønskede PHP5 skulle være. Men private og
> public classes osv... :)
Prøv at se < http://www.zend.com/engine2/ZendEngine-2.0.pdf>. Det
bliver nok det der ligger til grund for PHP5 en eller anden dag. Så er
vi en hel del af vejen (uden dog at være ved målet, hvis målet er et
objektsystem på højde med det der findes i Java).
--
Jacob - www.bunk.cc
Are you making all this up as you go along?
| |
Christian Joergensen (05-09-2002)
| Kommentar Fra : Christian Joergensen |
Dato : 05-09-02 13:39 |
|
On Thu, 05 Sep 2002 10:02:05 +0200, Niels Andersen wrote:
[XML handler i OOP]
> Nogen forslag til hvad der er galt? :)
Du skal bruge xml_set_object først. Eksempel:
<?php
xml_set_object($xmlparser, &$this);
xml_set_element_handler($xmlparser, "start", "end");
xml_set_character_data_handler($xmlparser, "data");
?>
--
Christian Jørgensen | Pity the poor egg: it only gets laid once.
http://www.razor.dk |
| |
Niels Andersen (05-09-2002)
| Kommentar Fra : Niels Andersen |
Dato : 05-09-02 15:43 |
|
Christian Joergensen wrote in <pan.2002.09.05.12.38.51.300912@razor.dk>:
> [XML handler i OOP]
> Du skal bruge xml_set_object først. Eksempel:
Arh, der var den.
Da jeg havde fået styr på den, opdagede jeg en (dum) fejl et andet sted. Den
fejl er muligvis årsag til at jeg ikke kunne få det andet til at virke, som
der står i manualen under xml_set_element_handler.
--
Mvh.
Niels Andersen
(la nels. anersyn.)
| |
|
|