带默认值的函数参数在不带默认值的参数之前:会发生什么


Function argument with default value preceding an argument without default value: what happens?

(也许这个问题以前已经问过了,但是我找不到)

如果在PHP中有一个带默认值的参数在一个不带默认值的参数之前会发生什么?就像这样:

function myfunction($foo = 12, $bar) {
    ...
}
    PHP是否给出错误,如果是,在哪个错误报告级别?
  • 当你只使用一个参数调用myfunction("hello")时会发生什么?

是的,它将输出一个警告,而不是一个错误,即:

Warning: Missing argument 2 in call to myfunction() in FILE on line LINENO

如果您调用myfunction("hello"), $bar是未定义的,因此它将是一个空字符串或NULL,并且$foo = "hello"。它只会发出一个警告,所以你的脚本仍然会执行。

你为什么不改变参数的顺序呢?

Edit:这里有一个很好的解释为什么在PHP中不可能重载独立函数:PHP函数重载