【问题标题】:How do you pass your (optional) arguments to a user-defined-function?如何将(可选)参数传递给用户定义函数?
【发布时间】:2011-04-30 21:27:30
【问题描述】:

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

你的用户函数调用看起来像这样吗:

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

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

【问题讨论】:

  • 您的问题不清楚。你调用一个函数的参数与它期望的一样多......
  • 我认为你想要的是超载
  • @Oli,我在问如何编写你的函数,如何期望将参数传递给你的函数。如果不需要传递此参数,是否将可选参数设置为 null。一切都与编码风格有关。
  • @Buddy:是的,既然您已经说过“可选参数”,那么您的问题就更有意义了。

标签: php function coding-style


【解决方案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() {
    ...
}

如果函数采用必需参数可变数量的参数,同样的方法适用:像第一个示例中那样明确指定始终必需的参数。

使用 cmets 来阐明变量 args 等始终是一个好主意。改用数组可能是一个更好的主意,但这可能取决于您在做什么。

【讨论】:

  • 感谢您清除此问题。是来自 php 手册还是来自你的经验?
  • 经验,不知道手册是否真的提到了这种“最佳实践”之类的东西
【解决方案2】:

你想在这些参数之前使用美元符号:

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

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

【讨论】:

  • 好吧,既然你已经澄清了,我希望看到你调用 func_num_args 并使用 if 来调用不同的函数,具体取决于你是否有一个或两个 args。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多