PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablennamen von Object ermitteln



LeBon
26-02-2009, 11:12
Hallo PHP Experten

Kann man in PHP5 den Variablenamen eines Objektes mit Hilfe einer Funktion ermitteln ?

Folgendes Beispiel soll das verdeutlichen:


class Object{

function getVariable(){
$variablename=??????();
echo('Der Variablenname lautet'. $variablenname);
}

}
$variable = new Object()
$variable->getVariable();

$variable_2 = new Object()
$variable_2->getVariable();

als Output soll

Der Variablenname lautet variable
Der Variablenname lautet variable_2

erscheinen

Any Idea ?

Gruss LeBon

msi
26-02-2009, 13:08
nein, geht nicht, wofür brauchst du das denn?

LeBon
26-02-2009, 15:09
Ist dazu gedacht, um rauszufinden, welche Instanz eines Objectes, diesesbenutzt.

Ein Vorschlag aus einem anderen Forum:


class OBJECT {

function get_name() {
$vars_used = Array();
foreach($GLOBALS as $k=>$v)
if(is_object($v) && (get_class($v) == get_class($this)))
$vars_used[$k] = array_key_exists($k,$vars_used) ? $vars_used[$k]+1 : 1;

return join(', ', array_keys($vars_used));
}

}

$variable = new OBJECT();
echo "Der Variablenname lautet: " . $variable->get_name() . "\n";

$variable_2 = new OBJECT();
echo "Der Variablenname lautet: " . $variable_2->get_name() . "\n";

Der Vorschlag ist per se nicht schlecht, ich habe da eher was in Richtung Reflection, was bei PHP5 neu implementiert wurde, gedacht. Ich bin aber bei php.net oder auch google nicht so fündig geworden.

undefined
26-02-2009, 15:13
Ich glaube er meint __function__


<?php

class Object
{
function getVariable()
{
echo('Der Variablenname lautet : ' . __FUNCTION__ . " :" . __CLASS__ . ":" . __METHOD__ );
}
}
$variable = new Object();
$variable->getVariable();

$variable_2 = new Object();
$variable_2->getVariable();

?>

Wenn nicht dann sie __get und __set

undefined
26-02-2009, 15:31
nein, geht nicht, wofür brauchst du das denn?
Sag niemals nie :D


<?php

class Object
{
function getVariable()
{
$my_variable = "NULL";
var_dump ( "<pre>", get_defined_vars( __METHOD__ ), "</pre>" );
}
}
$variable = new Object();
$variable->getVariable();

$variable_2 = new Object();
$variable_2->getVariable();

?>