【问题标题】:Disallow passing more parameters to a function than defined不允许向函数传递比定义更多的参数
【发布时间】:2016-11-07 07:41:21
【问题描述】:

在 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) 语法。所以在princable中可以将变参数函数与普通函数区分开来。

有没有办法在调用带有太多参数的函数时得到通知?

【问题讨论】:

    标签: php function parameters restriction


    【解决方案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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-20
      • 2013-01-07
      • 2011-08-28
      • 2015-09-05
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      相关资源
      最近更新 更多