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, "+", &params, 
&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, "+", &params, 
&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, "*", 
&params, &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

Reply via email to