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

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...