wieviele ebenen packt 'global' ?

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

  • wieviele ebenen packt 'global' ?

    hallo,

    hab folgendes problem dass ich in einer funktion, welche ich in einer funktion, [..] aufgerufen habe mit global $var ebendiese variable reinholen möche um sie innerhalb der funktion dann auch zu verwenden ..

    nur .. da die darunterliegende funktion diese variable nicht kennt, geht das auch nicht .. kann das wer bestätigen oder habe ich einfach einen denkfehler ?

    hat vielleicht jemand einen tipp wie ich das problem umgehen könnte ?
    umständlich ins $GLOBAL array schreiben is mir auch schon gekommen, wills dennoch recht einfach halten und würd eine andere (automatische) lösung bevorzugen

    bitte bitte meldet euch mit lösungen ( ich helf ja auch immer brav )
    mfg,
    [color=#0080c0]Coragon[/color]

  • #2
    wenn du in einer funktion eine global var änderst, und dann in der nächsten funktion verwenden willst, musst die var auch global verfügbar machen.

    PHP-Code:
    $var "hallo";

    function 
    foo() {
    $GLOBALS[var] = "bla";

    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      ok, nicht ganz angekommen .. also versuch ichs nochmal:

      $tpl->send();

      damit ruf ich meine template klasse auf und lass alles ausgeben ..
      im template aber hab ich ne if/else abfrage eingebaut ..

      ich such mir die variablen raus die ich dafür brauche und hol die per global rein, danach würde die abrage durch eval laufen .. bla bla ..

      darum solls jetzt aber nicht gehen ..

      das problem: da die verarbeitung recht rekursiv abläuft erreicht global meine variable - die ich für die if/else abrage brauche - nicht, da ich sie vermutlich - 3 funktionen/ebenen tiefer angelegt hab

      und genau das is mein problem .. wie kann ich erreichen dass das global dennoch funktioniert und mir die gewünschte variable liefert ?

      da ich die module gern einfach halten möchte greife ich ungern auf das superglobale array $GLOBAL zurück
      mfg,
      [color=#0080c0]Coragon[/color]

      Kommentar


      • #4
        anstatt sie in der 728sten ebene abzulegen, kannst du sie auch einfach direkt als $GLOBAL[name_der_var] behandeln. anders wirst du sie nicht erreichen können ..
        h.a.n.d.
        Schmalle

        http://impressed.by
        http://blog.schmalenberger.it



        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
        ... nur ohne :-)

        Kommentar


        • #5
          FALSCH:
          PHP-Code:
          $wurst="salami";
          function 
          fkt1() {

              function 
          fkt2() {
                  GLOBAL 
          $wurst;
              }


          RICHTIG:
          PHP-Code:
          $wurst="salami";
          function 
          fkt1() {
              GLOBAL 
          $wurst;

              function 
          fkt2() {
                  GLOBAL 
          $wurst;
              }


          Was auch nicht funktioniert (zumindest nicht auf den Versionen die ich getestet habe):

          FALSCH:
          PHP-Code:
          $wurst="salami";
          function 
          fkt1() {
              GLOBAL 
          $wurst;

              function 
          fkt2() {
                  GLOBAL 
          $wurst;
                  
          $wurst="mortadella";
              }

              
          fkt2();
              echo 
          $wurst// Gibt "salami" aus ...

          Rekursion hat nichts mit GLOBAL zu tun ... das kann beliebig viele Ebenen oder sonstwas haben ... !
          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar


          • #6
            mir ist klar dass du die funktion nicht in einer anderen funktion definieren kannst .. hätt ich auch nie probiert *g*

            mir gehts nicht um die rekursion, es geht einfach darum dass ich eine variable innerhalb einer funktion brauche die ich über umwege und mehrere anderen funkionen aufrufe *g*

            egal, werds wohl oder übel über das $GLOBAL array machen müssen *fg*
            danke für die schnellen antworten
            mfg,
            [color=#0080c0]Coragon[/color]

            Kommentar


            • #7
              ich find´s imma schön, wenn einfache fragen 1000 antworten bringenm, sodass am ende keiner mehr weiss worom es eigentlich ging
              h.a.n.d.
              Schmalle

              http://impressed.by
              http://blog.schmalenberger.it



              Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
              ... nur ohne :-)

              Kommentar


              • #8
                och, ich weiß noch sehrwohl um was es mir ging .. um arbeitserleichterung.
                war aber wohl nichts *g*
                mfg,
                [color=#0080c0]Coragon[/color]

                Kommentar


                • #9
                  kann es sein, dass du das ganze in einer klasse erledigen kannst ?
                  PHP-Code:
                  class test
                  {
                  var 
                  $ClassGlobals;

                  function 
                  private_SetClassGlobals ($variablenarray)
                    {
                    foreach (
                  $variablenarray as $key=>$wert)
                      {
                      
                  $this->classGlobals["{$key}"] = $wert;
                      }
                    }

                  function 
                  private_myFunction_blah()
                    {
                    return (
                  strlen($this->ClassGlobals['irgendeineStringVariable']));
                    }

                  function 
                  private_myFunction_hurga()
                    {
                    return (
                  $this->private_myFunction_blah() + 5);
                    }



                  function 
                  callMeFromOutside ($blah)
                    {
                    
                  $this->private_setClassGlobals($blah);
                    return (
                  $this->private_myFunction_hurga());
                    }

                  egal wie rekursiv du wirst, du wirst immer auf die in der klasse festgelegten Variablen zugreifen können (das sind also sotusay "ClassGlobals")

                  grüzze
                  cb
                  Hans Matthöfers Widerspruch zur Expertenerkenntnis: Künstliche Intelligenz ist besser als natürliche Dummheit.

                  Kommentar


                  • #10
                    nette idee i2dx
                    werd das ganze eh in meine main klasse packen ..

                    danke
                    mfg,
                    [color=#0080c0]Coragon[/color]

                    Kommentar


                    • #11
                      ich kapier das mit den Klassen nicht , ich hab 3 Bücher und keiner kanns erklären.
                      Das ist wie eine Schublade mit verschiedenen inhalten. Nun können Sie mit Klassen umgehen. DANKE MARKT UND TECHNIK!!!!
                      Sunshine CMS
                      BannerAdManagement
                      Borlabs - because we make IT easier
                      Formulargenerator [color=red]Neu![/color]
                      Herkunftsstatistik [color=red]Neu![/color]

                      Kommentar


                      • #12
                        benny, der thread ist nicht dazu da um klassen zu erklären, such dir nen eigenen *sfg*

                        ja, spam .. aber notwenig *fg*
                        mfg,
                        [color=#0080c0]Coragon[/color]

                        Kommentar


                        • #13
                          hehe da ist aber heute einer ganz fies drauf *smufg*
                          Sunshine CMS
                          BannerAdManagement
                          Borlabs - because we make IT easier
                          Formulargenerator [color=red]Neu![/color]
                          Herkunftsstatistik [color=red]Neu![/color]

                          Kommentar


                          • #14
                            Original geschrieben von Coragon Rivito
                            mir ist klar dass du die funktion nicht in einer anderen funktion definieren kannst .. hätt ich auch nie probiert *g*

                            mir gehts nicht um die rekursion, es geht einfach darum dass ich eine variable innerhalb einer funktion brauche die ich über umwege und mehrere anderen funkionen aufrufe *g*

                            egal, werds wohl oder übel über das $GLOBAL array machen müssen *fg*
                            danke für die schnellen antworten
                            Irgendwie hast Du's nicht verstanden ... Natürlich kannst Du Funktionen innerhalb von Funktionen definieren ... das weiß bloß kaum einer ... und richtig viel Sinn macht's dann auch nicht ... .

                            Ich begreife auch nicht ganz warum Du der Meinung bist das eine Funktion die auf Umwegen über andere Funktionen aufgerufen wurde sich Variablen nicht GLOBAL deklarieren kann ... ... bei mir funzte das schon immer ... ich wollte nur darauf hinweisen ... ach egal ... was schreibe ich mir hier die Finger wund ...
                            carpe noctem

                            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                            Kommentar


                            • #15
                              @ benny .. ich bin/war nicht fies drauf .. das belegen die *fg* 's

                              @ goth .. ja, aber nicht wenn in der funktion die vorher aufgerufen wurde die variable nicht im geltunsbereich liegt, dann kannst du global verwenden wie du willst, es klappt dann einfach nicht

                              und auf diese erkenntnis bin ich gestern gestossen
                              mfg,
                              [color=#0080c0]Coragon[/color]

                              Kommentar

                              Lädt...
                              X