2016-07-05 22 views
1

In PHP können Sie normalerweise eine Funktion mit mehr Parametern aufrufen, als z.Keine weiteren Parameter an eine Funktion übergeben als definiert

function f($a, $b) { 
    return $a . $b; 
} 
f('a', 'b', 'c', 'e'); 

ist vollständig gültig.

Ich verstehe, dass Sie Funktionen mit einer variablen Anzahl von Parametern definieren können. Aber das ist in den meisten Fällen nicht das, was Sie tun möchten. Also in diesen Fällen, wenn Sie versehentlich eine . durch eine , ersetzen, werden Sie nicht einmal gewarnt.

$x = '0'; 
f('a' , 'b' . $x . 'c') // returns ab0c 
f('a' , 'b' , $x . 'c') // returns ab 

Jetzt in PHP 7 gibt es die function f($a, $b, ...$others) Syntax. Im Prinzip ist es also möglich, variable Parameterfunktionen von gewöhnlichen zu unterscheiden.

Gibt es eine Möglichkeit, eine Benachrichtigung zu erhalten, wenn eine Funktion mit zu vielen Parametern aufgerufen wird?

Antwort

1

Es gibt eine Methode, um die an Ihre Funktion gesendeten Variablen tatsächlich zu zählen. Sie können dies jedoch INNERHALB der Funktion oder VOR der Funktion tun, indem Sie die gesendeten Elemente zählen.

Weitere Informationen finden Sie unter http://php.net/manual/en/function.func-num-args.php.

Sie können auch http://php.net/manual/en/function.func-get-args.php verwenden, um die aktuellen an die Funktion gesendeten Argumente abzurufen.

Ihr Problem wäre aber so etwas wie dies benötigen:

function(){ 
    $count = func_num_args(); 
    if($count > 3){ 
     //too many args 
    } 
    else{ 
     //continue your actual code 
    } 
}