Namen der Variablen eines Objekts ermitteln
anonym
- php
Hallo,
innerhalb eines Objekts wuerde ich gerne den Variablen-Namen des
Objekts ermitteln (wie es Klassen-Namen geht weiss ich). Unten
ein Mini-Script, dass das Problem zeigt. Danke fuer Hilfe!!!
<?php
class klasse_1a
{
function sag_deinen_namen()
{
echo "<h1>Ich bin ein Objekt der Klasse " . get_class($this) . "</h1>";
echo "<h1>Den Variablen-Namen dieses Objekts weiss ich leider nicht!</h1>
}
}
$objekt_1a = new klasse_1a;
$objekt_1a -> sag_deinen_namen();
?>
Hi,
innerhalb eines Objekts wuerde ich gerne den Variablen-Namen des
Objekts ermitteln
das Objekt kann in null bis unendlich vielen Variablen referenziert sein. Welche Namen hättest Du gerne?
Unten ein Mini-Script, dass das Problem zeigt.
Ja. Das Problem ist, dass Du den Namen irgend einer Variablen für belangbehaftet hältst. Dies lässt auf ein suboptimales Datenmodell schließen.
Cheatah
echo $begrüßung;
innerhalb eines Objekts wuerde ich gerne den Variablen-Namen des
Objekts ermitteln (wie es Klassen-Namen geht weiss ich).
Der Name des aktuellen Objekts ist immer $this. Doch das wusstest du sicher schon. Ansonsten weiß ein Objekt nicht, ob es überhaupt und wenn ja, welchen Variablen (ja, Mehrzahl) es zugewiesen ist. Ab PHP5 werden Objekte als Referenz übergeben. Nach $a = new object(); $b = a; verweisen sowohl $a als auch $b auf das gleiche Objekt.
Es gibt die Funktion get_defined_vars(), die ein Array zurückliefert. Du kannst dessen Werte mit deinem Objekt vergleichen und damit die Variablennamen ermitteln, die darauf verweisen.
echo "$verabschiedung $name";
Es gibt die Funktion get_defined_vars(), die ein Array zurückliefert. Du kannst dessen Werte mit deinem Objekt vergleichen und damit die Variablennamen ermitteln, die darauf verweisen.
Danke!!! Leider haelt die Funktion get_defined_vars() innerhalb und
ausserhalb des Ojekts nicht gleich. Ausserhalb des Objekts aufgerufen
zeigt die Funktion wirklich alle Variabeln - innerhalb eines Objekts
aufgerufen zeigt die Funktion nur Variabeln die im Objekt definiert
sind.
Kruz und gut: als ich die Frage stellte, ging ich davon aus, das die
Ermittlung des Objektnamens kurz und knackig ginge .... wenn dem nicht
so ist behelfe ich mich selbst mit einem WorkArround (zum beispiel
direkt nch dem Anlegen mit new von aussen eine Variabel ins Objekt
setzen).
Nochmals danke!!!
echo $begrüßung;
Es gibt die Funktion get_defined_vars(), die ein Array zurückliefert. Du kannst dessen Werte mit deinem Objekt vergleichen und damit die Variablennamen ermitteln, die darauf verweisen.
Danke!!! Leider haelt die Funktion get_defined_vars() innerhalb und ausserhalb des Ojekts nicht gleich. Ausserhalb des Objekts aufgerufen zeigt die Funktion wirklich alle Variabeln - innerhalb eines Objekts aufgerufen zeigt die Funktion nur Variabeln die im Objekt definiert sind.
Das ist die generelle Arbeitsweise PHPs. Innerhalb einer Funktion/Methode bist du in einem anderen Geltungsbereich als außerhalb. Globale Variablen lassen sich über das $GLOBALS-Array ansprechen oder müssen mit dem Schlüsselwort global bekanntgegeben werden.
Kruz und gut: als ich die Frage stellte, ging ich davon aus, das die Ermittlung des Objektnamens kurz und knackig ginge .... wenn dem nicht so ist behelfe ich mich selbst mit einem WorkArround (zum beispiel direkt nch dem Anlegen mit new von aussen eine Variabel ins Objekt setzen).
Wozu brachst du das? Innerhalb eines Objekts hast du $this. Verweise auf ein Objekt sind eine veränderliche Größe. Es ist also nicht immer gegeben, dass der gemerkte Name noch auf dein Objekt verweist. Es lässt sich sicher eine bessere Methode finden, dein eigentliches Ziel zu erreichen. Nenne es doch bitte einmal.
echo "$verabschiedung $name";