Kann man als Standardwert für einen Parameter eine Globale Variable angeben?

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

  • Kann man als Standardwert für einen Parameter eine Globale Variable angeben?

    Hallo, ich hoffe ihr könnt mir helfen.
    Meine Frage: Ist es möglich als Standardwert eines Parameters einer Funktion eine Globale Variable anzugeben? Wenn ja, wie?
    Beispiel:
    PHP-Code:
    function test($test $_POST['test']) {/*mach etwas*/
    Schon mal Danke für eure Antworten
    Zuletzt geändert von Jones011; 16.08.2006, 19:16.

  • #2
    warum deklarierst du das nicht in der funktion?
    mfg

    Kommentar


    • #3
      Die Standartwerte sind doch genau deswegen da, damit die Variabeln wenn nicht nochmals definiert worden, doch einen Wert haben. $_POST[] ist entweder eine Variabel die immer wieder wechselt(dann kannst du sie ganz normal beim Funktionsaufruf übergeben) oder aber immer der selbe Name (dann kannst du den ja auch als String eingeben).

      Kommentar


      • #4
        so ein konstrukt wie der topicstarter es hat, funktioniert aber nicht.
        mfg

        Kommentar


        • #5
          Re: Kann man als Standardwert für einen Parameter eine Globale Variable angeben?

          Original geschrieben von Jones011

          Schon mal Danke für eure Antworten
          Meistens kommt das Danke erst nachher. Hier ist der relevante Auszug aus dem php-Manual, Abschnitt Function Arguments -> Default Argument Values.

          Nach Abb. 17-8:
          The default value must be a constant expression, not (for example) a variable, a class member or a function call.

          Vor Abb. 17-8 steht noch sinngemäss:
          Also PHP allows you to use arrays (aber nur array("konstante",...) and special type NULL as default values

          Kommentar


          • #6
            Entgegen dem Manual ist es doch etwas möglich: folgendes geht:
            PHP-Code:
            function test($test "a21"

            $a $GLOBALS[$test];
               echo 
            "test=$a<br />";
               echo 
            "test={$_GET['test']}<br />";
                
                }

            $a21=$_GET['test'];    
            test(); 
            Nicht gehen würde $a = $$test; weil $a21 global ist.


            Für superglobals, bzw. arrays liegt die Schwierigkeit im array-Index: das analoge function test($test = "_GET['test']") geht nicht.
            hingegen geht:
            PHP-Code:
            function test($test "_GET"

            $a $GLOBALS[$test]['test']; 
            Eval: Superglobals sind mit eval() einfach, aber bei normalen Variabeln habe ich die Kurve nicht bekommen.

            Am einfachsten ist es im Anliegen dieses threads, auf den default value zu verzichten.

            Kommentar


            • #7
              Nochmal Danke für die Antworten. Ich werde es dann eben etwas umständlicher machen:
              PHP-Code:
              function test($test "") {
                if (
              $test == "") {
                  
              $test $_POST['test'];
                }

              Kommentar

              Lädt...
              X