Referenzen, zurückgeben von einer Funktion

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

  • Referenzen, zurückgeben von einer Funktion

    Der Code:
    PHP-Code:
    $superiorTag $this->tagStack->previous();//diese Methode gibt eine Referenz auf ein stack element zurück
    $superiorTag['contents'] .= $this->currentTag['contents']; 
    Soweit so gut. Der inhalt von $previous['contents'] wird wie erwartet verändert. Allerdings nicht der Wert im Stack (was ja der Sinn des ganzen Unterfangens ist). Es sieht also so aus, als ob eine Kopie der Variable zurückgegeben wird und keine Referenz. Ist jemand solch ein Bug in PHP bekannt.

    Edit: Suche in PHP's Bug Database hat zu keinem Ergebnis geführt.
    Zuletzt geändert von Nezzar; 17.11.2003, 13:01.
    "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

  • #2
    bin noch nicht ganz hinter gekommen was du meinst. aber denke mit $superiorTag möchtest du eine Variable im STack ändern. meiner meinung nach solltest du

    PHP-Code:
    $superiorTag =& $this->tagStack->previous(); 
    verwenden. während du auch function &previous() angeben mußt. siehe hierzu auch doku
    ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
    und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

    Kommentar


    • #3
      So meinte ich's. Das & bei der Methodendeklaration ist natürlich da. Wenn man aber das & vor den Methodenaufruf schreibt gibt's 'nen parsing error.
      Zuletzt geändert von Nezzar; 17.11.2003, 13:07.
      "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

      Kommentar


      • #4
        ein parse error??? hmm da muß ich pa[r]|[s]sen...
        ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
        und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

        Kommentar


        • #5
          Auch für mich gilt: RTFM!
          Hab' also grad mal in der Manual nachgeschlagen; Da wird die Syntax mit & auch im Funktionsaufruf angegeben. Ich kann das jetzt leider nicht nachprüfen, da ich grad im Büro bin. Ich sag' dann morgen mal bescheid falls es jemanden interessiert.

          Edit: Kann es sein das die Syntax mit & nur bei Objektmethoden fehlschlägt?
          Zuletzt geändert von Nezzar; 17.11.2003, 14:27.
          "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

          Kommentar


          • #6
            was ist denn jetzt für dich Methodendeklaration und Funktionsaufruf.

            du hast doch geschrieben das du das & bei der Methodendeklaration hattest. wobei ich es funktion nannte?!

            was hast du denn jetzt neues in der doku gelesen?

            jedenfalls erklärt es mir immer noch keinen parse error? denn mit oder ohne & dürfte dem php-parser egal sein
            ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
            und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

            Kommentar


            • #7
              Ich rede die ganze Zeit nur von einer Methode, niemals von einer Funktion (auch wenn ich vielleicht manchmal Funktion geschrieben hab ). Laut der Doku muss man jedenfalls auch vor dem Funktionsaufruf (und dies mal mein ich auch eine Funktion) auch ein & platzieren. Allerdings bin ich der Meinung, dass ich gestern Aben einen parse error gekriegt hab, als ich es mit einer Methode probiert hab....(jaja, war schon ziemlich spät)
              "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

              Kommentar


              • #8
                OK, ich muss zugeben, ich war wieder mal im Unrecht. Ich hatte das & vor dem Methodenaufruf vergessen (bzw. nicht gewusst das man da eins setzen muss).
                "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

                Kommentar

                Lädt...
                X