两者有什么区别.这两者都以完全相同的方式工作.
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既不是可选的,也没有默认值.
> PHP 5.4 – https://eval.in/154641
> PHP 5.5 – https://eval.in/154642