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

  • MaMo-Net
    hat ein Thema erstellt Alle Variablen einer Funktion in andere übergeben.

    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

  • MaMo-Net
    antwortet
    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.

    Einen Kommentar schreiben:


  • Basti
    antwortet
    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

    Einen Kommentar schreiben:


  • ff-webdesigner
    antwortet
    jau einfach implode variablen nach array und dann umgekehrt mit explode

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • MaMo-Net
    antwortet
    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

    Einen Kommentar schreiben:


  • Basti
    antwortet
    ...was spricht gegen eine Kasse?

    Basti

    Einen Kommentar schreiben:


  • axo
    antwortet
    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

    Einen Kommentar schreiben:


  • MaMo-Net
    antwortet
    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?

    Einen Kommentar schreiben:


  • Buhmann
    antwortet
    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(); 
    ?>

    Einen Kommentar schreiben:

Lädt...
X