]> granicus.if.org Git - php/commitdiff
Fixed bug that can not get default value of parameter if it's not `optional`
authorXinchen Hui <laruence@php.net>
Thu, 2 Aug 2012 14:28:04 +0000 (22:28 +0800)
committerXinchen Hui <laruence@php.net>
Thu, 2 Aug 2012 14:28:04 +0000 (22:28 +0800)
ext/reflection/php_reflection.c
ext/reflection/tests/ReflectionParameter_DefaultValueConstant_error.phpt
ext/reflection/tests/bug62715.phpt

index 7e80deaac60afa7e3b8c10b05dfd9ab267ca17a5..6656f58c65e7594ff1d8164b978c5c69cf140779 100644 (file)
@@ -1477,11 +1477,6 @@ static parameter_reference *_reflection_param_get_default_param(INTERNAL_FUNCTIO
                return NULL;
        }
 
-       if (param->offset < param->required) {
-               zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Parameter is not optional");
-               return NULL;
-       }
-
        return param;
 }
 /* }}} */
@@ -1497,7 +1492,7 @@ static zend_op *_reflection_param_get_default_precv(INTERNAL_FUNCTION_PARAMETERS
 
        precv = _get_recv_op((zend_op_array*)param->fptr, param->offset);
        if (!precv || precv->opcode != ZEND_RECV_INIT || precv->op2_type == IS_UNUSED) {
-               zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Internal error");
+               zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Internal error: Failed to retrieve the default value");
                return NULL;
        }
 
index 984b06efe2228a989391cedfb1d603cd2e94cce4..a2c2d245829abdc481f038df46226c1ba25af8dd 100644 (file)
@@ -18,8 +18,6 @@ foreach($reflect->getParameters() as $param) {
        }
 }
 ?>
-==DONE==
 --EXPECT--
-Parameter is not optional
+Internal error: Failed to retrieve the default value
 CONST_TEST_1
-==DONE==
index 721d484c713bef155684f87fadb8b00c58999d0e..feb67f614be4728df1ad1f6812d23b8f3342bb87 100644 (file)
@@ -10,8 +10,15 @@ foreach ($r->getParameters() as $p) {
     var_dump($p->isDefaultValueAvailable());
 }
 
+foreach ($r->getParameters() as $p) {
+    if ($p->isDefaultValueAvailable()) {
+        var_dump($p->getDefaultValue());
+    }
+}
 ?>
 --EXPECT--
 bool(true)
 bool(true)
 bool(false)
+NULL
+int(0)