具有无限数量参数的 PHP 函数

2022-08-30 20:18:10

如何编写可以接受无限数量参数的函数?

我试图做的是在包装以下内容的类中创建一个函数:

$stmt->bind_param('sssd', $code, $language, $official, $percent);

答案 1

你有没有看过func_get_argsfunc_get_argfunc_num_args

例如:

function foo(){
    if ( func_num_args() > 0 ){
        var_dump(func_get_args());
    }
}

艺术

function bind_param(){
    if ( func_num_args() <= 1 ){
        return false; //not enough args
    }
    $format = func_get_arg(0)
    $args = array_slice(func_get_args(), 1)

    //etc
}

关于
Ewan Todds的评论:
我对你创建包装器的基本API一无所知,但另一种选择可能是对链接函数做一些事情,这样你得到的接口看起来像这样:

$var->bind()->bindString($code)
            ->bindString($language)
            ->bindString($official)
            ->bindDecimal($percent);

我更喜欢使用func_get_args因为代码可能更具可读性,更重要的是,由于缺乏格式变量,不太可能导致错误。


答案 2

以前你应该使用,但在php 5.6中,你可以使用...运算符func_get_args()

例如,您可以编写一个函数,该函数返回所有数字的总和,并发送到该函数:

function bind_param(...$params){
   var_dump($params);
}

您的实际上是所有元素的数组。params


推荐