cvs: ZendEngine2 / zend_reflection_api.c /tests bug29523.phpt
| From: | Marcus Boerger | Date: | Wed, 04 Aug 2004 22:47:56 +0000 |
| Subject: | cvs: ZendEngine2 / zend_reflection_api.c /tests bug29523.phpt | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-2848@lists.php.net to get a copy of this message | ||
helly Wed Aug 4 18:47:56 2004 EDT
Added files:
/ZendEngine2/tests bug29523.phpt
Modified files:
/ZendEngine2 zend_reflection_api.c
Log:
- Fix bug #29523 (ReflectionParameter::isOptional() is incorrect)
http://cvs.php.net/diff.php/ZendEngine2/zend_reflection_api.c?r1=1.118&r2=1.119&ty=u
Index: ZendEngine2/zend_reflection_api.c
diff -u ZendEngine2/zend_reflection_api.c:1.118 ZendEngine2/zend_reflection_api.c:1.119
--- ZendEngine2/zend_reflection_api.c:1.118 Mon Aug 2 19:10:29 2004
+++ ZendEngine2/zend_reflection_api.c Wed Aug 4 18:47:56 2004
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_reflection_api.c,v 1.118 2004/08/02 23:10:29 helly Exp $ */
+/* $Id: zend_reflection_api.c,v 1.119 2004/08/04 22:47:56 helly Exp $ */
#include "zend.h"
#include "zend_API.h"
#include "zend_exceptions.h"
@@ -833,7 +833,7 @@
/* }}} */
/* {{{ reflection_parameter_factory */
-static void reflection_parameter_factory(struct _zend_arg_info *arg_info, int offset, zval *object
TSRMLS_DC)
+static void reflection_parameter_factory(struct _zend_arg_info *arg_info, int offset, int required,
zval *object TSRMLS_DC)
{
reflection_object *intern;
parameter_reference *reference;
@@ -850,6 +850,7 @@
reference = (parameter_reference*) emalloc(sizeof(parameter_reference));
reference->arg_info = arg_info;
reference->offset = offset;
+ reference->required = required;
intern->ptr = reference;
intern->free_ptr = 1;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **)
&name, sizeof(zval *), NULL);
@@ -1413,7 +1414,7 @@
zval *parameter;
ALLOC_ZVAL(parameter);
- reflection_parameter_factory(arg_info, i, parameter TSRMLS_CC);
+ reflection_parameter_factory(arg_info, i, fptr->common.required_num_args, parameter
TSRMLS_CC);
add_next_index_zval(return_value, parameter);
arg_info++;
http://cvs.php.net/co.php/ZendEngine2/tests/bug29523.phpt?r=1.1&p=1
Index: ZendEngine2/tests/bug29523.phpt
+++ ZendEngine2/tests/bug29523.phpt
--TEST--
Bug #29523 (ReflectionParameter::isOptional() is incorrect)
--FILE--
<?php
class TestClass
{
}
function optionalTest(TestClass $a, TestClass $b, $c = 3)
{
}
$function = new ReflectionFunction('optionalTest');
$numberOfNotOptionalParameters = 0;
$numberOfOptionalParameters = 0;
foreach($function->getParameters() as $parameter)
{
var_dump($parameter->isOptional());
if ($parameter->isOptional())
{
++$numberOfOptionalParameters;
}
else
{
++$numberOfNotOptionalParameters;
}
}
var_dump($function->getNumberOfRequiredParameters());
var_dump($numberOfNotOptionalParameters);
?>
--EXPECT--
bool(false)
bool(false)
bool(true)
int(2)
int(2)