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

时间:2011-04-30 21:27:31

标签: php function coding-style

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

您的用户函数调用是这样的:

$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)

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

2 个答案:

答案 0 :(得分:1)

如果参数为可选,请使用默认值正常指定:

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() {
    ...
}

如果函数采用所需参数可变数量的参数,则应用相同的方法:明确指定所需的参数,如第一个示例中所示。

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

答案 1 :(得分:0)

你想在那些args之前找到美元符号:

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

但如果您真的在询问如何在php中使用可变数量的参数,请参阅帮助中的func_num_args和func_get_args。