2016-07-05 156 views
1

在php中,您通常可以使用比定义的参数更多的参数来调用函数,例如,不允许向定义的函数传递更多参数

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

是完全有效的。

我知道你可以用不定数量的参数定义函数。但在大多数情况下,这不是你想要做的。 因此,在这些情况下,如果您错误地用,代替.,您甚至不会收到警告。

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

现在在PHP 7中有function f($a, $b, ...$others)语法。因此,在可打印的情况下,可以从普通的参数中辨别可变参数的功能。

当函数调用的参数太多时,有没有办法获得通知?

回答

1

有一种方法可以实际计算发送给您的函数的变量,但是您只能在函数的内部或函数之前通过计算发送的项目来执行此操作。

有关更多信息,请参见http://php.net/manual/en/function.func-num-args.php

您还可以使用http://php.net/manual/en/function.func-get-args.php来获取发送给函数的当前参数。然而

您的问题将需要的东西是这样的:

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