【发布时间】:2012-06-04 13:29:28
【问题描述】:
我在 PHP 函数签名中寻找 Required Parameter 的确切类型
仅使用 NULL 初始化参数是否使其成为可选参数?即
function foo($optional=NULL, $OptionalOrRequired="Optional Or Required", $required){}
我对第二个参数感到困惑,它是必需参数还是可选参数?
更新
我正在使用reflection 获取函数的所有参数和必需参数
public function getPlayer($params=3, $c){}
// results
$reflection->getNumberOfParameters() -> 2
$reflection->getNumberOfRequiredParameters() -> 2 // it should be one
public function getPlayer($params=3, $c, $x=NULL)
// results
$reflection->getNumberOfParameters() -> 3
$reflection->getNumberOfRequiredParameters() -> 2
当我得到一个默认值在必需之前的答案时,这是反射函数返回所需参数的错误计数的原因吗?
谢谢
【问题讨论】:
-
基本上,您在函数声明中省略参数的右侧,即
= null,则它是必需的,否则如果未提供,则参数采用您在右侧指定的默认值参数声明。 -
感谢 Gavin 的快速回复,实际上我对这个 NULL 与我在第二个参数中使用的实际值感到困惑。在给定的方法签名中,第二个参数是可选的还是必需的?
-
可选,因为你已经为它提供了默认值,如果用户在调用它时不提供值。