Annika: Variable variables oder eval() ?

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

  1. 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

  2. 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/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. 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

      1. 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/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
        http://emmanuel.dammerer.at/selfcode.html