[Funktion] Include und globale Variablen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Funktion] Include und globale Variablen

    Hallo Leute,

    ich möchte in einer Funktion (genauer: in einer Methode einer Klasse) eine Datei includen, deren Variablen ich global setzen möchte, damit sie auch außerhalb der Funktion Gültigkeit besitzen. Dies wäre an sich kein Problem, da ich die Variablen vorher einfach mit global $var; als solche deklarieren könnte. Nun sind mir die Variablennamen in der includeten Datei unbekannt.
    Gibt es eine Möglichkeit dieses Hindernis zu überwinden, ohne größeren Aufwand zu betreiben?

    arrays sind klasse

  • #2
    http://de.wikipedia.org/wiki/Oop#Kapselung

    mit anderen worten: wozu?

    Kommentar


    • #3
      An die Funktion bzw. Methode werden dynamisch bestimmte Parameter übergeben, deren weitere Verarbeitung in der Funktion darin resultieren, dass eine bestimmte Datei includet werdern soll, in der sich Variablen befinden, die für den weiteren Durchlauf des Skripts relevant sind.

      Mit anderen Worten: Keine Chance?
      arrays sind klasse

      Kommentar


      • #4
        die methode könnte einen schlüssel, flag o.ä. zurückgeben, sodass die aufrufer-datei weiß, was zu inkludieren ist.

        wenn das inkludieren außerhalb des objektes erfolgt, kannst du die variablen global behandeln.

        oder (ich meine, das habe ich in einem anderen deinert threads schon so vorgeschlagen) die variablen kommen in ein array und der einzige name, den du wissen musst, ist dein array. das kannst du dann als parameter / rückgabewert von methoden benutzen oder sonst was.

        Kommentar


        • #5
          die methode könnte einen schlüssel, flag o.ä. zurückgeben, sodass die aufrufer-datei weiß, was zu inkludieren ist.
          das wäre zwar vom "code-design" weniger fein, wäre aber wohl das beste.
          damit habe ich dann auch meine lösung -- danke
          arrays sind klasse

          Kommentar


          • #6
            Bin gerade auf eine Idee gekommen, wie ich den Code umschreiben müsste, um die Namen der Variablen auf einfache Art und Weise zu kennen. Aber bevor ich mich nun festlege und mich an die Arbeit mache, wollte ich vorher nur noch sichergehen, ob irgendetwas dagegen spricht eine Datei folgendermaßen einzubinden:

            Datei: inc.php
            PHP-Code:
            <?php
            $var1 
            'a';
            $var2 'b';
            $var3 'c';
            ?>
            Einbindung und der ausführenden Datei:
            PHP-Code:
            function xy(...)
            {
            global 
            $var1$var2$var3;
            include 
            inc.php;
            }

            xy(...);

            // Ergebnis:
            // Die Variablen sind global verfügbar. 
            Oder sollte ich doch lieber bei der "klassischen" Herangehensweise bleiben?

            arrays sind klasse

            Kommentar


            • #7
              naja, das müsste funktionieren. aber jetzt scheinst du ja innerhalb von $o->xy() ja doch zu wissen, wie die variablen heissen.

              Kommentar


              • #8
                jep! ich werde dann wohl die variablen per array übergeben, diese mittels for-schleife durchlaufen und als global ${$vars[$i]}; ausgeben.

                arrays sind klasse

                Kommentar


                • #9
                  naaaa, variable variablen sind immer ein workaround...
                  PHP-Code:
                  $arr1 = array('a' => 'foo''b' => 'bar');

                  function 
                  xy(){
                     global 
                  $arr1;
                     return 
                  $arr1['a'].' '.$arr1['b'];

                  xy() kann dann als parameter empfangen, ob jetzt $arr1 oder $arr2 genommen wird.

                  Kommentar


                  • #10
                    in diesem fall muss ich doch auf var. vars zurückgreifen, da die variablen in der inkludeten datei für das restliche skript ihre normale form (also nicht extra in einem array) behalten sollten.
                    werde aber in zukunft darauf achten die var. vars. so gering wie möglich zu halten
                    arrays sind klasse

                    Kommentar


                    • #11
                      evtl. kann dir die funktion extract() sinnvoll erscheinen.

                      Kommentar


                      • #12
                        danke, aber ich bleibe bei var. vars -- ist für meine zwecle doch sinnvoller
                        arrays sind klasse

                        Kommentar

                        Lädt...
                        X