加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP:ReflectionParameter,isOptional vs isDefaultValueAvailab

发布时间:2020-12-13 13:35:02 所属栏目:PHP教程 来源:网络整理
导读:两者有什么区别.这两者都以完全相同的方式工作. public static function getArgsArray($reflectionMethod,$argArray){ $arr = array(); foreach($reflectionMethod-getParameters() as $key = $val){ $arr[$val-getName()] = isset($argArray[$val-getName()
两者有什么区别.这两者都以完全相同的方式工作.
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读