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