/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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.)

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste