如何将(可选)参数传递给用户定义函数


How do you pass your (optional) arguments to a user-defined-function?

我的意思是,如何将参数传递给函数?

你的用户函数调用是这样的吗?

$this->getSomeNumber($firstArg, $secondArg, null);

还是检测传递给函数的参数个数,然后执行该工作?

我想知道是否有任何编码风格涵盖这一点。其他编程语言是如何处理的呢?

给那些不懂的人的例子:

function doSmth($firstArgument) {
    if(func_num_args() > 1) {
        //do job if second argument was passed
    }
}

第二个例子:

function doSmthElse($firstArgument, $secondArgument) {
    if($secondArgument) {
        //do job if second argument was passed
    }
}

然后你叫它:

doSmth($var, $secondvar) or doSmth($var)
//**OR**
doSmthElse($var, $secondvar) or doSmthElse($var, null)

哪个更好?我的意思是其他程序员对你有什么期望?

如果参数是可选的,通常使用默认值指定:

function foo($requiredArg, $optionalArg = null)

如果函数接受多个可选参数,则像上面的例子一样显式指定它们。

如果函数接受可变数量的参数(例如,sprintf),则使用func_get_args &有限公司

/**
 * Specify here as a comment that this function takes a variable amount of args
 */
function doSomethingWithParameters() {
    ...
}

如果函数接受必需的形参可变数量的形参,则采用相同的方法:像第一个示例那样显式指定始终需要的形参。

使用注释来澄清变量参数等总是一个好主意。使用数组可能是一个更好的主意,但这可能取决于您在做什么。

你需要在这些参数前加上美元符号:

$this->getSomeNumber($firstArg, $secondArg, null);

但如果你真的想知道如何在php中使用可变数量的参数,请参阅帮助中的func_num_args和func_get_args。