两者有什么区别。两者都以完全相同的方式工作。
public static function getArgsArray($reflectionMethod,$argArray){
$arr = array();
foreach($reflectionMethod->getParameters() as $key => $val){
$arr[$val->getName()] = isset($argArray[$val->getName()]) ?
$argArray[$val->getName()] : (isset($_REQUEST[$val->getName()])
? $_REQUEST[$val->getName()] : ($val->*isDefaultValueAvailable()* ? $val->getDefaultValue() : NULL));
}
return $arr;
}
最佳答案
好问题。考虑这个例子
function foo($foo = 'foo', $bar) {}
对于
$foo
参数,可以理解isDefaultValueAvailable()
将返回true
,但是isOptional()
将返回false
,因为下一个参数($bar
)没有默认值,因此不是可选的。为了支持非可选的$bar
参数,$foo
本身必须是非可选的。希望这有道理;)
我注意到行为在PHP版本之间有所不同。 5.5返回上面的内容,而5.4则表明参数1既不是可选的,也没有默认值。