禁止将更多参数传递给定义的函数

时间:2016-07-05 12:50:02

标签: php function parameters restriction

在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 个答案:

答案 0 :(得分: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
    }
}