felipe Mon Aug 18 19:42:39 2008 UTC
Modified files:
/php-src/ext/reflection php_reflection.c
/php-src/ext/reflection/tests ReflectionMethod_invoke_basic.phpt
property_exists.phpt
Log:
- MFB: New parameter parsing API
- Fixed tests
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.316&r2=1.317&diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.316
php-src/ext/reflection/php_reflection.c:1.317
--- php-src/ext/reflection/php_reflection.c:1.316 Wed Aug 13 21:57:00 2008
+++ php-src/ext/reflection/php_reflection.c Mon Aug 18 19:42:38 2008
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_reflection.c,v 1.316 2008/08/13 21:57:00 pajoye Exp $ */
+/* $Id: php_reflection.c,v 1.317 2008/08/18 19:42:38 felipe Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1659,9 +1659,8 @@
ZEND_METHOD(reflection_function, invoke)
{
zval *retval_ptr;
- zval ***params;
- int result;
- int argc = ZEND_NUM_ARGS();
+ zval ***params = NULL;
+ int result, num_args = 0;
zend_fcall_info fci;
zend_fcall_info_cache fcc;
reflection_object *intern;
@@ -1670,10 +1669,8 @@
METHOD_NOTSTATIC(reflection_function_ptr);
GET_REFLECTION_OBJECT_PTR(fptr);
- params = safe_emalloc(sizeof(zval **), argc, 0);
- if (zend_get_parameters_array_ex(argc, params) == FAILURE) {
- efree(params);
- RETURN_FALSE;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", ¶ms,
&num_args) == FAILURE) {
+ return;
}
fci.size = sizeof(fci);
@@ -1682,7 +1679,7 @@
fci.symbol_table = NULL;
fci.object_pp = NULL;
fci.retval_ptr_ptr = &retval_ptr;
- fci.param_count = argc;
+ fci.param_count = num_args;
fci.params = params;
fci.no_separation = 1;
@@ -2497,22 +2494,16 @@
ZEND_METHOD(reflection_method, invoke)
{
zval *retval_ptr;
- zval ***params;
+ zval ***params = NULL;
zval **object_pp;
reflection_object *intern;
zend_function *mptr;
- int argc = ZEND_NUM_ARGS();
- int result;
+ int result, num_args = 0;
zend_fcall_info fci;
zend_fcall_info_cache fcc;
zend_class_entry *obj_ce;
METHOD_NOTSTATIC(reflection_method_ptr);
-
- if (argc < 1) {
- zend_error(E_WARNING, "Invoke() expects at least one parameter,
none given");
- RETURN_FALSE;
- }
GET_REFLECTION_OBJECT_PTR(mptr);
@@ -2533,10 +2524,8 @@
return;
}
- params = safe_emalloc(sizeof(zval **), argc, 0);
- if (zend_get_parameters_array_ex(argc, params) == FAILURE) {
- efree(params);
- RETURN_FALSE;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", ¶ms,
&num_args) == FAILURE) {
+ return;
}
/* In case this is a static method, we should'nt pass an object_pp
@@ -2571,7 +2560,7 @@
fci.symbol_table = NULL;
fci.object_pp = object_pp;
fci.retval_ptr_ptr = &retval_ptr;
- fci.param_count = argc-1;
+ fci.param_count = num_args-1;
fci.params = params+1;
fci.no_separation = 1;
@@ -3767,14 +3756,14 @@
zval *retval_ptr = NULL;
reflection_object *intern;
zend_class_entry *ce;
- int argc = ZEND_NUM_ARGS();
METHOD_NOTSTATIC(reflection_class_ptr);
GET_REFLECTION_OBJECT_PTR(ce);
/* Run the constructor if there is one */
if (ce->constructor) {
- zval ***params;
+ zval ***params = NULL;
+ int num_args = 0;
zend_fcall_info fci;
zend_fcall_info_cache fcc;
@@ -3783,9 +3772,10 @@
return;
}
- params = safe_emalloc(sizeof(zval **), argc, 0);
- if (zend_get_parameters_array_ex(argc, params) == FAILURE) {
- efree(params);
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "*",
¶ms, &num_args) == FAILURE) {
+ if (params) {
+ efree(params);
+ }
RETURN_FALSE;
}
@@ -3797,7 +3787,7 @@
fci.symbol_table = NULL;
fci.object_pp = &return_value;
fci.retval_ptr_ptr = &retval_ptr;
- fci.param_count = argc;
+ fci.param_count = num_args;
fci.params = params;
fci.no_separation = 1;
@@ -3818,7 +3808,10 @@
if (retval_ptr) {
zval_ptr_dtor(&retval_ptr);
}
- efree(params);
+
+ if (params) {
+ efree(params);
+ }
} else if (!ZEND_NUM_ARGS()) {
object_init_ex(return_value, ce);
} else {
@@ -5423,7 +5416,7 @@
php_info_print_table_start();
php_info_print_table_header(2, "Reflection", "enabled");
- php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 1.316
2008/08/13 21:57:00 pajoye Exp $");
+ php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 1.317
2008/08/18 19:42:38 felipe Exp $");
php_info_print_table_end();
} /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt?r1=1.4&r2=1.5&diff_format=u
Index: php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt
diff -u php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt:1.4
php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt:1.5
--- php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt:1.4 Tue May
27 13:16:27 2008
+++ php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt Mon Aug
18 19:42:39 2008
@@ -91,8 +91,8 @@
Static method:
-Warning: Invoke() expects at least one parameter, none given in
%sReflectionMethod_invoke_basic.php on line %d
-bool(false)
+Warning: ReflectionMethod::invoke() expects at least 1 parameter, 0 given in
%sReflectionMethod_invoke_basic.php on line %d
+NULL
Called staticMethod()
Notice: Undefined variable: this in %sReflectionMethod_invoke_basic.php on
line %d
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/property_exists.phpt?r1=1.5&r2=1.6&diff_format=u
Index: php-src/ext/reflection/tests/property_exists.phpt
diff -u php-src/ext/reflection/tests/property_exists.phpt:1.5
php-src/ext/reflection/tests/property_exists.phpt:1.6
--- php-src/ext/reflection/tests/property_exists.phpt:1.5 Sat May 24
13:35:03 2008
+++ php-src/ext/reflection/tests/property_exists.phpt Mon Aug 18 19:42:39 2008
@@ -108,9 +108,9 @@
obj(A)::$a
bool(true)
obj(A)::$b
-bool(false)
+bool(true)
obj(A)::$c
-bool(false)
+bool(true)
obj(A)::$d
bool(false)
obj(A)::$e
@@ -130,9 +130,9 @@
A::$a
bool(true)
A::$b
-bool(false)
+bool(true)
A::$c
-bool(false)
+bool(true)
A::$d
bool(false)
A::$e
@@ -152,9 +152,9 @@
B::$a
bool(true)
B::$b
-bool(false)
+bool(true)
B::$c
-bool(false)
+bool(true)
B::$d
bool(false)
B::$e
@@ -174,11 +174,11 @@
C::$a
bool(true)
C::$b
-bool(false)
+bool(true)
C::$c
bool(false)
C::$d
-bool(false)
+bool(true)
C::$e
bool(false)
===C===
@@ -196,11 +196,11 @@
obj(C)::$a
bool(true)
obj(C)::$b
-bool(false)
+bool(true)
obj(C)::$c
bool(false)
obj(C)::$d
-bool(false)
+bool(true)
obj(C)::$e
bool(false)
===PROBLEMS===
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php