Variable variables oder eval() ?
Annika
- php
hallo
ich habe zwei unbekannte variablen: $eins und $zwei.
wobei der in $zwei enthaltene string ein existierender klassenname ist.
nun möchte ich dass der in $ein enthaltene string als "variable" das objekt von $zwei enthält.
Beispiel:
$eins = 'test';
$zwei = 'Klasse';
also müsste der codeausschnitt dies ausführen:
$test = new Klasse();
Wie kann ich dies realisieren?
Grüße, Annika
Hi,
ich habe zwei unbekannte variablen: $eins und $zwei.
wobei der in $zwei enthaltene string ein existierender klassenname ist.nun möchte ich dass der in $ein enthaltene string als "variable" das objekt von $zwei enthält.
Beispiel:
$eins = 'test';
$zwei = 'Klasse';also müsste der codeausschnitt dies ausführen:
$test = new Klasse();Wie kann ich dies realisieren?
$$eins = new $zwei;
Schöne Grüße
Julian
Hallo Annika,
Beispiel:
$eins = 'test';
$zwei = 'Klasse';also müsste der codeausschnitt dies ausführen:
$test = new Klasse();Wie kann ich dies realisieren?
Ich konnte es mit folgendem Code realisieren:
<?php
error_reporting(E_ALL);
class Klasse {
function getText() {
return "Dies ist ein Text.\n";
}
}
$eins = 'test';
$zwei = 'Klasse';
$$eins = new $zwei();
echo $test->getText();
?>
Als Hilfestellung nahm ich die folgenden Seiten:
Ich kann dir allerdings nur sagen, dass dies sehr schlechter Code ist. So etwas sollte man _immer_ mit Hilfe von Arrays lösen.
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hallo,
Ich kann dir allerdings nur sagen, dass dies sehr schlechter Code ist. So etwas sollte man _immer_ mit Hilfe von Arrays lösen.
Wo ist dabei der Vorteil von Arrays?
Grüße
Jeena Paradies
Hallo Jeena,
Ich kann dir allerdings nur sagen, dass dies sehr schlechter Code ist. So etwas sollte man _immer_ mit Hilfe von Arrays lösen.
Wo ist dabei der Vorteil von Arrays?
Ich gebe mal ein Beispiel:
<?php
$wichtigeVariable = 'Hier ist ein wichtiger Wert.';
// weiterer Code
$eins = 'wichtigeVariable';
$zwei = 'Klasse';
// Achtung, jetzt passiert es!
$$eins = $zwei();
// weiterer Code
echo $wichtigeVariable;
?>
In diesem Fall gibt es eine Variable $wichtigeVariable, die durch den mittleren Code überschrieben wird (obwohl das nicht sein sollte).
Wird hingegen in unserem Beispiel mit einem assoziativen Array gearbeitet, werden keine Variablen im Hauptscope überschrieben. Also z. B. so:
<?php
$wichtigeVariable = 'Hier ist ein wichtiger Wert.';
// weiterer Code
$eins = 'wichtigeVariable';
$zwei = 'Klasse';
// Hier ist das Array:
$myArray = Array();
$myArray[$eins] = $zwei();
// weiterer Code
echo $wichtigeVariable;
?>
In diesem Fall behält $wichtigeVariable ihren ursprünglichen Wert.
Grüße
Marc Reichelt || http://www.marcreichelt.de/