Andreas NEU: Alle Variablen am Ende der Seite ausgeben

Ich würde mir am Ende der Seite gerne alle Variablen ausgeben mit denen ich auf der Seite gearbeitet habe, ohne jede einzeln anzuführen.
Ist das Möglich?

Andreas

  1. Hi,

    Ich würde mir am Ende der Seite gerne alle Variablen ausgeben mit denen ich auf der Seite gearbeitet habe, ohne jede einzeln anzuführen.
    Ist das Möglich?

    http://www.php.net/manual/en/function.get-defined-vars.php

    (Beachten, dass diese Funktion sich auf den Scope, in dem sie aufgerufen wird, bezieht.)

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Danke aber da bekomme ich alle, ich will nur die ich in dieser Seite angelegt habe. Also wenn ich

      $a
      $b
      $c
      $d

      habe, dann nur diese. Nicht die Globalen etc.

      Gruß

      Andreas

      1. habe, dann nur diese. Nicht die Globalen etc.

        Was gefällt dir an der Lösung aus dem obersten Kommentar denn nicht?

        1. So was habe ich auch schn lange gesucht, aber wie bekomme ich auch den Inhalt der Variablen angezeigt?

          print_r(array_keys(get_defined_vars()));

          So wie ich das verstehe, zeigt es mir nur die Variablen an, nicht den Inhalt!

          Thai

          1. Hi,

            print_r(array_keys(get_defined_vars()));

            So wie ich das verstehe, zeigt es mir nur die Variablen an, nicht den Inhalt!

            Was glaubst du denn, was die Funktion array_keys bewirkt …?

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
          2. Moin!

            So was habe ich auch schn lange gesucht, aber wie bekomme ich auch den Inhalt der Variablen angezeigt?

            Da kann dir das böse eval() helfen.

            Du wirst mit den Ausgaben nicht zufrieden sein. Es sind alle (oder nur die) Variablen sichtbar die in deinem "Scope" (z.B. in Deiner Funktion) und nur in dem Zustand bei dem dieses ausgeführt wird.

            <?php  
            $foo='<li>Hallo</li>';  
            $bar=2;  
            foreach (array_keys(get_defined_vars()) as $varname) {  
                print '$'.$varname.':';  
                $s=eval ("print_r($$varname);");  
                if (isset($_SERVER['HTTP_HOST'])) {  
                         print htmlentities($s)."<br />";  
                } else {  
                         print $s."\n";  
                }  
            }  
            ?>
            

            Das ist der Stand der Dinge zu dem Zeitpunkt an dem ich damit Schluss gemacht habe, eventuelle Fehler abzustellen oder das noch bequemer zu machen. Mehr Zeit wollte ich in das mir "nicht besonders sinnvoll" erscheinende nicht investieren.

            Lies besser hier:
            http://www.php.net/manual/de/debugger-about.php

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix

            1. foreach (array_keys(get_defined_vars()) as $varname) {

              Also beschränkst du die Ausgabe auf die Schlüssel .....

              print '$'.$varname.':';
                  $s=eval ("print_r($$varname);");
                  if (isset($_SERVER['HTTP_HOST'])) {
                           print htmlentities($s)."<br />";
                  } else {
                           print $s."\n";
                  }
              }

              ... um sie anschliessend wieder aus dem Scope zu fummeln?
              Ist das nun ironisch von dir oder absichtlich durchs Knie von hinten ins Auge?

              ein  schlichtes var_dump(get_defined_vars()); gibt Schlüssel UND Wert aus.

              Oder versteh  ich nur nicht, was du da machen willst?

              1. Moin!

                ein  schlichtes var_dump(get_defined_vars()); gibt Schlüssel UND Wert aus.

                Stimmt!

                Ich bin einfach mal von dem ausgegangen was Thai geschrieben hatte und habe mir damit nicht viel Mühe gegeben. Jetzt in der Draufsicht und nach Deinem Hinweis sehe ich es auch.

                Die verbesserte (aber nicht wirklich brauchbarere) Version:

                <?php  
                $foo='<li>Hallo</li>';  
                $bar=2;  
                  
                $s=eval(var_dump(get_defined_vars()));  
                if (isset($_SERVER['HTTP_HOST'])) {  
                    print nl2br(htmlentities($s))."<br />";  
                } else {  
                    print $s."\n";  
                }  
                ?>
                

                Es gilt weiterhin, was ich schon schrieb.

                MFFG (Mit freundlich- friedfertigem Grinsen)

                fastix

                1. <?php

                  $s=eval(var_dump(get_defined_vars()));
                  ?>

                    
                  Ich habs nicht wirklich probiert, aber wenn ich ein Array durch eval() jage, dürfte, ausser eine fatalen Fehlermeldung, nichts rauskommen. Wenn ich falsch liege, dann erklär mir das bitte, denn ich sehe in dem Codeweder Funktion noch Sinn.  
                  
                  
                  1. Hi,

                    <?php

                    $s=eval(var_dump(get_defined_vars()));
                    ?>

                    
                    >   
                    > Ich habs nicht wirklich probiert, aber wenn ich ein Array durch eval() jage, dürfte, ausser eine fatalen Fehlermeldung, nichts rauskommen.  
                      
                    Er jagt ja nicht mal das Array durch, sondern die Rückgabe von var\_dump.  
                    Die ist allerdings vom Typ void – welchen Effekt das also haben soll, ist mir auch schleierhaft.  
                    Die \*Ausgabe\* des var\_dump wird rausgeworfen, noch bevor irgendwas per eval ausgewertet wird.  
                    Welchen Sinn es dann anschließend noch haben soll, den void-„Wert“ abhängig von einer zweifelhaften Kontext-Abfrage entweder direkt, oder aber per htmlentities und nl2br „garniert“ auszugeben - Fragezeichen …  
                      
                    MfG ChrisB  
                      
                    
                    -- 
                    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
                    
                    1. Moin!

                      Ich sagte schon, ich habe dafür nicht viel Zeit ver(sch)wendet, habs nur am Prompt probiert.

                      Jetzt besser?

                      <?php  
                      #Tests:  
                      $foo='<li>Hallo</li>';  
                      $bar=2;  
                      $foobar='Hinz & Kunz';  
                      $barfoo='- Hinz  
                      - Kunz';  
                        
                        
                      # Ausgabe:  
                      ob_start();  
                      var_dump(get_defined_vars());  
                      PrintOut(ob_get_clean());  
                        
                      function PrintOut($s) {  
                        if (isset($_SERVER['HTTP_HOST'])) {  
                      	print '<pre>'.str_replace(PHP_EOL, "<br />", (htmlspecialchars($s))).'</pre>';  
                        } else {  
                      	print $s;  
                        }  
                      }  
                      ?>  
                      
                      

                      Macht bei mir am Prompt und via Webserver was es soll und hat keine ungekapselten Variablen mehr...

                      P.S. Besser machen!

                      MFFG (Mit freundlich- friedfertigem Grinsen)

                      fastix

                      1. Jetzt besser?

                        Da du immer noch nicht gesagt hast, was du überhaupt mit dem Code bezweckst, muss ich sagen, nein.
                        Ich versteh den Sinn in deinem Code immer noch nicht. Betreibst du den Aufwand nur zum Formatieren der Ausgabe? Denn mehr seh ich darin nicht und erkenn deshalb vermutlich auch den Sinn nicht.