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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |