[PHP] magische __toString zinloos?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Iemand enig idee waarom die functie alleen werkt als je direct iets echo'ed, en niet als je een object naar string cast? Dit lijkt me echt een zinloze ontwerp-beslissing van het PHP team.

Je kunt namelijk andere classes die gebruikt worden in je huidige class niet meenemen in de output in die functie, want alles moet als string ge-returned worden; en de objecten die je aanroept kun je alleen maar _toString'gen als je ze echo'ed.

Wat ik gedaan heb als oplossing is best ranzig, kheb nu gewoon alles ge-echo'ed in de __toString functie, en "" gereturned, zo kan ik tenminste child objects wel fatsoenlijk afdrukken in die functie.

Iemand anders last gehad van dit vreemde gedrag?

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom hiervoor gekozen is weet ik niet, maar je kan er toch wel enigszins omheen werken? Je kan output buffering aanzetten, je string echo'en en daarna uit de buffer halen, om de buffer dan weer leeg te maken. Op die manier kun je het toch nog returnen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Ik denk niet dat je je in PHP druk hoeft te maken over "ranzige" oplossingen :)

Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

IIRC is daar heftige discussie over geweest, je zou er de archieven van php-internals eens op na moeten zoeken.

Rustacean


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Zoijar schreef op zondag 12 december 2004 @ 20:54:
Ik denk niet dat je je in PHP druk hoeft te maken over "ranzige" oplossingen :)
Hehe, dat klopt. Maar ik probeer toch netjes te werk te gaan. En een "form" object echo'en door gewoon echt het object te echo'en vind ik wel netter, en erg handig. :)

In het kader van "ranzige truuks", hier komt er nog eentje:

Dynamisch classes loaden.
PHP:
1
2
3
4
     $bs = "basiclayout";

     $bla2 = new $bs("bla2");
     echo $bla2;


Ach, het werkt. En ik weet wat ik aan het doen ben. :)

[ Voor 29% gewijzigd door Grijze Vos op 13-12-2004 01:00 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info