Mit Konstanten als Standardfunktionswerte in PHP
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.
Lösung
Ja, das legal ist.
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