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

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by Jones011; 16-08-2006, 19:16.

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

    Comment


    • #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).

      Comment


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

        Comment


        • #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

          Comment


          • #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.

            Comment


            • #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'];
                }

              Comment

              Working...
              X