&functionName

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

  • &functionName

    ich habe gerade in der SMTP-Class von TBT gestöbert und
    Code:
    function &put (...)
    gesehen.

    was hat's denn mit dem "&" vorm funktionsnamen auf sich? hab ich noch nie gesehen.

  • #2
    damit wird eine referenz erzeugt.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      soweit so gut ... ich kenne das bisher nur bei variablen bspw. IN funktionen.

      also um bspw. den Inhalt mehrerer Variablen zu verändern ohne ein return nutzen zu müssen.

      nur check ich nicht, was dann bei einer funktion passiert

      Kommentar


      • #4
        die fkt kann wiederverwendet werden (z.b. bei recursion) OHNE eine KOPIE anlegen zu müssen. das spart speicher.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          was heisst das nun für die Anwendung?

          am aufruf der funktion ändert sich wahrscheinlich nichts, weil beim aufruf die referenz erzeugt wird !?

          beim zweiten aufruf erzeugt er nun wieder eine referenz oder nimmt der parser automatisch die bereits erzeugte referenz?

          also kann man theoretisch vor jede funktion das "&" schreiben ?

          Kommentar


          • #6
            Original geschrieben von graf
            also kann man theoretisch vor jede funktion das "&" schreiben ?
            wo es sinn macht bestimmt. aber das sollte dir jemand anderes erklären... ich bin da nicht sooo tief in der materie.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              ob ich mal ne mail an TBT schreiben kann? er muss es ja wissen.

              Kommentar


              • #8
                OffTopic:
                du kannst es ja mal probieren. aber ich persönlich mag es auch nicht, wenn ich ungefragte! emails bekomme.

                ich habe ihm mal ne PM mit dem link des threads hier geschickt, mit der bitte mal vorbei zu schauen.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  danke

                  Kommentar


                  • #10
                    nagut, dann mal für alle

                    Das & vor dem Funktionsnamen weist die Funktion an, eine Referenz zurückzugeben.
                    Das macht sich speicher- und performancemäßig stark bemerkbar, wenn
                    man große Arrays oder Objekte zurückgibt.
                    Durch die Referenz wird nur ein Verweis auf die Variable zurückgegeben,
                    und KEINE Kopie dieser gemacht.

                    Zu beachten ist die mehrmalige Benutzung einer Funktion mit Referenz,
                    da es dort ganz schnell ungewollte Effekte gibt.

                    zB:
                    PHP-Code:
                    $array=array(...);

                    function &
                    test() { 
                       global 
                    $array;
                       return 
                    $array// jedesmal die selbe Variable !!!
                    };


                    $a=test();
                    foreach(
                    $a as $key=>$value) {
                      
                    $b=test();
                      foreach(
                    $b as $key1=>$value1) {
                        
                    // ...
                      
                    }

                    der Aufruf von $b=test(); überschreibt in diesem Falle (da Referenz!) das $a aus
                    der äußeren Schleife.
                    Was dann in der Schleife passiert, ist wohl schwer nachzuvollziehen

                    Benutzen kann man es, wenn innerhalb der Funktion eine neue Variable
                    erstellt wird, also jedesmal eine neue Referenz erstellt wird.
                    TBT

                    Die zwei wichtigsten Regeln für eine berufliche Karriere:
                    1. Verrate niemals alles was du weißt!


                    PHP 2 AllPatrizier II Browsergame

                    Kommentar


                    • #11
                      also der return-wert ist "nur" eine referenz auf das array.

                      die sache mit dem überschreiben ... mag ja auf der einen seite ein hübscher effekt sein, was den speicher betrifft, aber ne Warnung könnte der Parser bei deinem Beispiel ruhig ausgeben, wäre ne nette Sache

                      aber ich habs verstanden, danke.

                      Kommentar


                      • #12
                        Ist das dann dasselbe,wie als ob ich
                        PHP-Code:
                          return &$array
                        zurückgebe? Kann ich also im Prinzip die Referenz wie oben geschrieben zurückgegeben, oder gibts da einen unterschied ? (z.b. dachte ich bisher, lokale varibalen in einer function werden gelöscht sobal die funktion verlassen wird, daher bringt eine zurückgegebenen referenz darauf auch nix, also dachte ich bisher

                        gruss

                        rth
                        H I L F E
                        GD FreeType Antialising
                        Gesuch PHP Entwicklungsumgebung
                        ------------------------------------------
                        Der Cmabrigde rael tset, sruf whoin du wlilst

                        Kommentar


                        • #13
                          da´nn bekommste ne Fehlermeldung von PHP

                          return &$array; ist die alte Schreibweise
                          TBT

                          Die zwei wichtigsten Regeln für eine berufliche Karriere:
                          1. Verrate niemals alles was du weißt!


                          PHP 2 AllPatrizier II Browsergame

                          Kommentar


                          • #14
                            Ups achso.
                            return &$array; ist die alte Schreibweise
                            wusste ich nicht, da ich es eigentlich auch noch nie probiert habe

                            Also mit diesem
                            PHP-Code:
                            &function 
                            sach ich php, salopp gesagt, es wird ne Referenz zurückgeben, und pass bitte auf, falls es ne lokale variable ist, dann lösch sie nicht da ich sie noch weiterbenuzten möchte. Richtig ?

                            schonmal danke

                            rth
                            H I L F E
                            GD FreeType Antialising
                            Gesuch PHP Entwicklungsumgebung
                            ------------------------------------------
                            Der Cmabrigde rael tset, sruf whoin du wlilst

                            Kommentar

                            Lädt...
                            X