global und performance

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

  • global und performance

    Hallo,

    man kann in einer Funktion ja auf zwei Arten an eine Variable kommen: entweder man übergibt diese als Parameter oder über "global" macht man den Bereich der Variablen global (soweit wohl nichts neues )

    Wie wirkt es sich jetzt auf die performance (oder sonst irgendwas) aus, wenn ich die 15 Variablen, die meine Funktion bekommt, nicht als Parameter übergebe, sondern alle global mache und dann meine Funktion "sauberer" aufrufen kann??
    (Der Sinn der Frage ist der, dass ich die Funktion immer in meinen HTML-Dateien aufrufe und daher nicht eine 100 Zeichenkette drinhaben will, wegen der Übersichtlichkeit).

    DANKE!!!

    strauberry

  • #2
    global ist unsauber, das erschwert zusätzlich das Debugging. Was hälst du von Array als Parameter

    Warum schreibt man eine Funktion? Um

    1. wiederholende Schritte nicht mehrmals schreiben zu müssen und
    2. einen Anweisungsblock abzukappseln

    Globale Vars in Fkt. zerstört die Kappselung!
    Zuletzt geändert von asp2php; 15.03.2005, 11:39.

    Kommentar


    • #3
      Hatte ich auch schon dran gedacht, würde es aber nicht erleichtern
      Wäre trotzdem sehr viel, weil ich z.B. HTTP_POST_VARS oder _SESSION übergebe und ich die ja nicht kürzer schreiben kann...

      Kommentar


      • #4
        Es geht auch um Sicherheit. Nimm mal folgendes Beispiel bei globals_on(index.php):
        PHP-Code:
        ...
        include(
        "$uservar");
        ... 
        Normalerweise kommt diese uservar aus einem Form (also POST). Wenn jetzt aber ein ganz gemeiner das Form nicht benutzt sondern die Seite direkt aufruft
        [COLOR=crimson]http://www.test.ch/index.php?uservar=.htaccess[/COLOR]
        Nun wird deine index.php (sofern php die Zugriffsberechtigung hat) die .htaccess Datei anzeigen, was bestimmt nicht in deinem Sinne wäre.

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          @jahlives, das was du sagst, hat nichts mit dem Topic zu tun

          Kommentar


          • #6
            @strauberry, $_SESSION, $_POST, $_GET, $_COOKIE & Co. sind aber schon global (Superglobals) . Trotzdem, um die Kappelung nicht zu zerstören, würde ich solche globalen Vars auch nicht direkt in der Fkt. verwenden, sondern übergebe sie lieber über Parameter, somit ist meine Funktion universell einsetzbar. Was hast du gegen:

            PHP-Code:
            function foo ($myfoo) {
            ...
            }

            $arr[] = ....;
            $arr[] = ....;
            ...
            $something foo($arr); 

            Kommentar


            • #7
              @asp2php:
              Wollte ihm nur klarmachen, dass auch wenn global on schneller wäre, ich es auf keinen Fall bevorzugen würde.
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Hatte bisher aber nur gelesen, dass man PHP austricksten kann, konnte mir dabei aber nicht vorstellen, wie Das Posting hat mir das jetzt gezeigt, also auch wenn es nicht gepasst hat, danke

                Kommentar


                • #9
                  Original geschrieben von jahlives
                  @asp2php:
                  Wollte ihm nur klarmachen, dass auch wenn global on schneller wäre, ich es auf keinen Fall bevorzugen würde.
                  hat aber trotzdem nichts mit globalen Vars in Fkt. zu tun ... aber irgendwie ins Schwarze getroffen

                  Kommentar


                  • #10
                    Gegen foo($var) habe ich nichts, aber gegen

                    PHP-Code:
                    foo($ID$db_handler$HTTP_POST_VARS$HTTP_GET_VARS$query_result$mode$ID_ADDONS$suchstring$highlight$_SESSION); 
                    Die Funktion generiert den Content meiner Website... und da muss man eben an all das dran

                    Die Werte werden vorher nicht bearbeitet.. die Funktion wird nur aufgerufen, um den Content anzuzeigen... Daher ist ein Array nicht so dienlich

                    Kommentar


                    • #11
                      ... aber irgendwie ins Schwarze getroffen
                      OffTopic:
                      Auch ein blindes Huhn findet mal nen Korn

                      Prost Mahlzeit

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar

                      Lädt...
                      X