Frage

Ist das legal?

<?php

function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
      //lots_of_awesome_code
}

?>

Dabei gilt MENU_DEFAULT_VALUE und ODP_DEFAULT_VALUE sind Konstanten definiert zuvor in der Datei.

War es hilfreich?

Lösung

Ja, das legal ist.

das Handbuch :

  

Der Standardwert muss eine Konstante sein   Ausdruck, nicht (zum Beispiel) ein   Variable, ein Klassenmitglied oder eine Funktion   nennen.

Konstanten passen diese Rechnung perfekt.

Andere Tipps

In einem OOP-Kontext können Sie auch einen Teilnehmer Konstante als Standardmethode Argument Wert verwenden.

class MyClass
{
    const A = 1;

    public function __construct($arg = self::A)
    {
        echo $arg;
    }
}

, warum Sie nicht versuchen?

Still, für alle Fälle können Sie jetzt testen, den folgenden Code:

define('MENU_DEFAULT_VALUE', 10);
define('ODP_DEFAULT_VALUE', 'hello');

function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
    var_dump($foo);
    var_dump($nub);
    var_dump($odp);
}

ftw();

gibt die folgende Ausgabe:

string 'pwnage' (length=6)
int 10
string 'hello' (length=5)

Also ich würde sagen, ja, es gilt: -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top