两者有什么区别。两者都以完全相同的方式工作。

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
  • 09-10 11:42
    查看更多