Mailinglisten-Archive |
Grüß Euch! Ich weiß, daß das Betreff erstamal etwas seltsam klingt ... :) Aber es geht darum: Ich habe mir zur leichteren Fehlersuche in meinen PHP-Skripten eine Funktion SHOW programmiert, die mir einfach nur den aktuellen Wert einer Variable in der Form 'name = wert' anzeigen soll. Typische Verwendung sieht dann so aus: - irgendwo ganz am Anfang steht: define(DEBUG,0); Und wenn ich Debugging-Infos brauche, ändere ich das auf define(DEBUG,1); - im Programmcode steht dann zum Beispiel if(DEBUG) SHOW('a'); um mir den Inhalt der Variable $a anzuzeigen. Die aktuelle Form von SHOW findet Ihr im Anhang. Wie ihr seht, übergebe ich zur Zeit den Variablennamen einfach als String und SHOW holt sich den Wert dann per $GLOBALS[$name]. Leider funktioniert das nicht, wenn ich z.B. direkt ein Array-Element sehen will: $a[3] = 'abc'; SHOW('a[3]'); Das geht nicht, weil so die Variable $GLOBALS['a[3]'] benutzt wird, die natürlich nicht existiert und leer ist, statt $GLOBALS['a'][3]; Konzeptuell schöner fände ich es, wenn ich der SHOW-Funktion nur eine Referenz auf eine Variable übergeben würde. Nun aber meine erste Frage: Hab' ich irgendeine Chance, von einer Variablenreferenz wieder auf ihren Namen zurückzuschließen? (Ich vermute, nein.) Wenn nicht, werde ich halt auf eval ausweichen müssen ... Zweite Frage: Wenn $a ein Objekt ist (is_object($a)==true), kann ich dann irgendwie die Klassen-Definition herausfinden, oder zumindest, welche Variablen zum Objekt gehören. Ups, während des Tippens fand' ich eine Lösung! Ich kann wie bei Arrays auch bei Objekten mit der each-Funktion über alle Elemente iterieren! Nett ... Ist das ein absichtliches Sprach-Feature oder 'is' halt gard' so'? :) Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ > PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7
php::bar PHP Wiki - Listenarchive