PHP:ReflectionParameter,isOptional vs isDefaultValueAvailable

前端之家收集整理的这篇文章主要介绍了PHP:ReflectionParameter,isOptional vs isDefaultValueAvailable前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
两者有什么区别.这两者都以完全相同的方式工作.
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

猜你在找的PHP相关文章