phpbar.de logo

Mailinglisten-Archive

[php] =?iso-8859-1?Q?Infos_=FCber_Variable_herausfinden=3F?=

[php] =?iso-8859-1?Q?Infos_=FCber_Variable_herausfinden=3F?=

Martin Ramsch m.ramsch_(at)_computer.org
Sat, 11 Sep 1999 13:19:12 +0200


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