PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : object in object über eval ausgeben?


Xantos
31.03.2004, 16:24:20
Hi...

Ich habe ein Problem beim schreiben eines kleinen codes.
Ich habe mir eine klasse geschrieben, die aus einer Datenbank mittles fetch_object Daten holt, und die speichere ich dann in meine Instanzvariable meiner Klasse. Will ich nun die einzelnen Daten mittlels eval in einer art template ausgeben, steht da immer nur Object->spalte.

In meinem "template" steht $this->item->spalte .

in php selbst kein problem, da gibt mir der aufruf von $this->item->spalte den gewünschten wert aus, nur über eval nicht, ist das normal, und wie kann man das denn übergehen?

Übrigens mit einem Array geht es auch nicht... dann erscheint Array['spalte']
bei $this->item['spalte'] .

Vieleicht hat ja jemand einen Tipp für mich, vielen Dank im vorraus... :)

Fuchs
02.04.2004, 15:26:39
Na was passiert denn bei eval? PHP evaluiert das erste und einzige function argument. Und das wird vor dem function call natuerlich evaluiert.

OK warscheinlich hat das keiner Verstanden deshalb ein Beispiel:


$a = 'foo';
htmlentities($a);


jetzt wird nicht htmlentities mit $a als argument aufgerufen sondern $a enthaelt ja 'foo', damit ist das aquivalent zu htmlentities('foo');

genau das gleiche passiert bei eval():

$var = new stdclass();
$var->foo = 'bar';

eval("some php code $var->foo some stuff");

nun wird -bevor eval() aufgerufen wird- das function argument evaluert, sprich die Variablen interpoliert, sprich durch ihren Wert ersetzt. Was bei dir jetzt passerien koennte ist dass $var (was ein Object ist) durch den String 'Object' ersetzt wird und erst dann eval aufgerufen wird.

echo new StdClass(); // 'Object'

Zeig uns einfach mal den relevanten code.