Ankündigung

Einklappen
Keine Ankündigung bisher.

Alle Variablen einer Funktion in andere übergeben

Einklappen

Neue Werbung 2019

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

  • Alle Variablen einer Funktion in andere übergeben

    Hi.

    Ich stehe gerade vor einem (für mich) sehr komplexen Problem. Ich habe folgende (sehr vereinfachte Struktur) Struktur:
    Code:
    function x () {
     global $config, $db;
     // irgendwas
     $einevariable = 1;
     $nocheinevariable = $einevariable/2;
     y();
     // irgendwas
    }
    function y () {
     // irgendwas - es werden alle Variablen aus x() benötigt
    }
    x();
    Nun brauche ich in y() die ganze Variablen aus x() und sie müssen auch modifiziert irgendwie wieder zurück in x().

    extract() und compact() habe ich schon ausprobiert. Bin zu keinem zufriedenstellenden Ansatz gekommen. Hat wer eine Lösung zur Hand? (Am besten wäre sowas wie: getDefinedVarsInFunctionAsRefs() )

    Danke und grüße, MaMo


  • #2
    was hat das bei den fortgeschrittenen zu suchen? übergeb doch alle variablen per parameter an y().
    modifiziert irgendwie wieder zurück in y().
    ich nehme an, du meinst hier x() ,oder?

    dann pack alle variablen in ein array, return es und dann haste die variablen bei x()...

    wie du schon angedeutet hast, eignen sich hierfür compact und extract.
    PHP-Code:
    <?php
    function () {
     global 
    $config$db;
     
    // irgendwas
     
    $einevariable 1;
     
    $nocheinevariable $einevariable/2;
     
    $return y$einevariable,$nocheinevariable);
    extract($return);
     
    // irgendwas
    }
    function 
    ($einevariable,$nocheinevariable) {
     
    // irgendwas - es werden alle Variablen aus x() benötigt
     
    return(compact("einevariable","nocheinevariable"));
    }
    x(); 
    ?>

    Kommentar


    • #3
      Hi.

      Nun, es steht bei Fortgeschrittenen, weil ich es gerade so nicht haben möchte. Das ganze ist noch variabler als das da oben und es steht nicht fest was definiert ist und was nicht. Es können 10 Variablen definiert sein, aber auch garkeine.

      MfG MaMo

      PS: Mit Extract und Compact wüsste ich evtl. ne Lösung, dazu müsste man aber den Namen einer Variable herausfinden können. Wie geht das?

      Kommentar


      • #4
        ich halte wirklich _gar nichts_ von solchen scherzen.
        du machst die ganze schnittstelle kaputt - du brauchst doch gar keine funktion mehr, wenn du solche schei*se machst.

        aber gut, jedem seinen eigenen strick.

        http://us2.php.net/call_user_func
        http://us2.php.net/func_get_args
        grüße
        axo

        Kommentar


        • #5
          ...was spricht gegen eine Kasse?

          Basti

          Kommentar


          • #6
            Hi.

            Habs mittlerweile gelöst. Wie ich festgestellt habe, gibt get_defined_vars nicht die im Script definierten Variablen zurück, sondern in einer Funktion, nur die dort vorhandenen.

            So übergebe ich einfach get_defined_vars, in der Funktion dann extr und die Keys werden mit array_keys zwischengespeichert. Dann wird das ganze mit den Keys durch compact gejagt und zurückgeliefert und mittels extract wieder überschrieben.

            Danke für eure Hilfe,
            MaMo

            Kommentar


            • #7
              Das ist der falsche Weg! Wenn du das vernünfzig machen willst, dann solltest du einen Link von axo beachten, nämlich

              http://us2.php.net/func_get_args

              Gruß
              phpfan

              Kommentar


              • #8
                jau einfach implode variablen nach array und dann umgekehrt mit explode
                www.ff-webdesigner.de
                einfach gutes Webdesign

                Kommentar


                • #9
                  Geil. Das wird ja immer bunter. Wie wäre es mit Globals? Oder ein CSV-File, deren Pfad übergeben wird? Vielleicht auch alle Werte einfach Addieren und die Quersumme davon übergeben?

                  Basti

                  Kommentar


                  • #10
                    Das Thema hat sich für mich erledigt. Weder func_get_args kommt inr Frage, noch implode, explode. (Sagmal willst du mich auf den Arm nehmen?)
                    Die jetzige Lösung ist bestens.

                    Kommentar

                    Lädt...
                    X