static int get_parameter_default(zval *result, parameter_reference *param) {
if (param->fptr->type == ZEND_INTERNAL_FUNCTION) {
+ if (param->fptr->common.fn_flags & ZEND_ACC_USER_ARG_INFO) {
+ /* We don't have a way to determine the default value for this case right now. */
+ return FAILURE;
+ }
return zend_get_default_from_internal_arg_info(
result, (zend_internal_arg_info *) param->arg_info);
} else {
GET_REFLECTION_OBJECT_PTR(param);
if (param->fptr->type == ZEND_INTERNAL_FUNCTION) {
- RETURN_BOOL(((zend_internal_arg_info*) (param->arg_info))->default_value);
+ RETURN_BOOL(!(param->fptr->common.fn_flags & ZEND_ACC_USER_ARG_INFO)
+ && ((zend_internal_arg_info*) (param->arg_info))->default_value);
} else {
zval *default_value = get_default_from_recv((zend_op_array *)param->fptr, param->offset);
RETURN_BOOL(default_value != NULL);
$ro = new ReflectionObject($closure);
$rm = $ro->getMethod('__invoke');
echo $rm, "\n";
+
+$rp = $rm->getParameters()[0];
+var_dump($rp->isDefaultValueAvailable());
+try {
+ var_dump($rp->getDefaultValue());
+} catch (ReflectionException $e) {
+ echo $e->getMessage(), "\n";
+}
?>
--EXPECT--
Method [ <internal> public method __invoke ] {
Parameter #0 [ <optional> $b = <default> ]
}
}
+
+bool(false)
+Internal error: Failed to retrieve the default value