Goedemorgen,
Al een tijdje gebruik ik eval() in PHP om title's en h1's uit de database om te zetten naar de waarde die ze moeten krijgen, bijvoorbeeld:
aangezien $Site->Naam gevuld is met "Example.com", wordt de waarde van H1 hier dan ook gevuld met "Welkom op Example.com";
Dit werkt allemaal goed, totdat ik hetvolgende probeerde:
$Stad->Naam zet ie netjes om, maar $Stad->Land->Naam niet.
Ik krijg dan de logische foutmelding: Object of class Land could not be converted to string
Ik heb nooit geweten dat de eval()-functie van PHP een voor een de properties af gaat en dan uiteindelijk bij een Class komt en een error geeft omdat ie hem niet om kan zetten naar een String. Wanneer ik namelijk gewoon ..
.. doe, dan vult ie netjes de H1 met bijvoorbeeld "Nederland".
Ik heb al gekeken naar __toString() e.d., maar daarmee krijg ik ook niet het gewenste resultaat.
Heeft iemand van jullie wellicht een idee hoe ik dit kan oplossen?
Alvast bedankt!
De oplossing
Het probleem was niet de eval()-functie, maar het niet gebruiken van de curly syntax.
Verwijderd in "[PHP] Eval child class property"
Al een tijdje gebruik ik eval() in PHP om title's en h1's uit de database om te zetten naar de waarde die ze moeten krijgen, bijvoorbeeld:
PHP:
1
2
| $this->H1 = "Welkom op $Site->Naam"; eval("\$this->H1 = \"$this->H1\";"); |
aangezien $Site->Naam gevuld is met "Example.com", wordt de waarde van H1 hier dan ook gevuld met "Welkom op Example.com";
Dit werkt allemaal goed, totdat ik hetvolgende probeerde:
PHP:
1
2
| $this->H1 = "$Stad->Naam - $Stad->Land->Naam"; eval("\$this->H1 = \"$this->H1\";"); |
$Stad->Naam zet ie netjes om, maar $Stad->Land->Naam niet.
Ik krijg dan de logische foutmelding: Object of class Land could not be converted to string
Ik heb nooit geweten dat de eval()-functie van PHP een voor een de properties af gaat en dan uiteindelijk bij een Class komt en een error geeft omdat ie hem niet om kan zetten naar een String. Wanneer ik namelijk gewoon ..
PHP:
1
| $this->H1 = $Stad->Land->Naam; |
.. doe, dan vult ie netjes de H1 met bijvoorbeeld "Nederland".
Ik heb al gekeken naar __toString() e.d., maar daarmee krijg ik ook niet het gewenste resultaat.
Heeft iemand van jullie wellicht een idee hoe ik dit kan oplossen?
Alvast bedankt!
De oplossing
Het probleem was niet de eval()-functie, maar het niet gebruiken van de curly syntax.
Verwijderd in "[PHP] Eval child class property"
[ Voor 6% gewijzigd door Verwijderd op 19-12-2009 22:04 ]