2011-04-30 104 views
1

我的意思是,你如何将你的论点传递给函数?如何将您的(可选)参数传递给用户定义的函数?

做你的用户函数调用看起来是这样的:

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

或者你发现了多少参数传递给函数,然后做的工作?

我不知道是否有任何编码风格覆盖此。其他编程语言如何处理这个问题?

UPDATE

例FOT的,谁不明白:

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) 

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

+0

你的问题不清楚。你可以用它所期望的参数调用一个函数... – 2011-04-30 21:32:28

+0

我想你想要的是重载 – Andre 2011-04-30 21:33:42

+0

@Oli,我问如何编写你的函数,如何期待参数传递给你的函数。如果不需要传递参数,是否将可选参数设置为null。这完全是关于编码风格。 – Buddy 2011-04-30 21:35:47

回答

1

如果参数为可选,具有默认值通常指定:

function foo($requiredArg, $optionalArg = null) 

如果函数采用多个可选参数,指定它们明确地像在上面的例子。

如果函数采用一个可变数量的参数(例如,如sprintf),然后使用func_get_args & CO。

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

如果该函数采用所需的参数的参数可变量的,同样的方法也适用:指定明确地像在第一示例中总是必需的参数。

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

+0

谢谢你清除这个。是从PHP手册还是从你的expirience? – Buddy 2011-04-30 22:05:25

+0

经验,不知道手册是否真的提到了这种“最佳实践” – 2011-04-30 22:07:03

0

你想那些ARGS之前美元符号:

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

但如果你真的问如何使用可变的参数个数在PHP中,看到func_num_args和func_get_args的帮助。

+0

错字错误。查看更新。这是关于编码风格。 – Buddy 2011-04-30 21:46:49

+0

哦,现在你已经明确了,我希望看到你调用func_num_args并根据你是否有一个或两个参数来调用不同的函数。 – 2011-04-30 21:49:18

+0

看到这个帮助页http://us.php.net/manual/en/function.func-num-args.php – 2011-04-30 21:50:25

相关问题