helly           Sat Jan  3 20:04:23 2009 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src/ext/reflection     php_reflection.c 
  Log:
  - MFH Show closure's bound  as static parameter
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.164.2.33.2.45.2.48&r2=1.164.2.33.2.45.2.49&diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.164.2.33.2.45.2.48 
php-src/ext/reflection/php_reflection.c:1.164.2.33.2.45.2.49
--- php-src/ext/reflection/php_reflection.c:1.164.2.33.2.45.2.48        Sat Jan 
 3 19:08:47 2009
+++ php-src/ext/reflection/php_reflection.c     Sat Jan  3 20:04:22 2009
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_reflection.c,v 1.164.2.33.2.45.2.48 2009/01/03 19:08:47 helly Exp 
$ */
+/* $Id: php_reflection.c,v 1.164.2.33.2.45.2.49 2009/01/03 20:04:22 helly Exp 
$ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -850,24 +850,32 @@
        }
        if (closure) {
                const zend_function *closure_fptr = 
zend_get_closure_method_def(closure TSRMLS_CC);
+               zval *closure_this = zend_get_closure_this_ptr(closure 
TSRMLS_CC);
+               HashTable *static_variables = NULL;
+               int index = 0, count = closure_this ? 1 : 0;
                if (closure_fptr->type == ZEND_USER_FUNCTION && 
closure_fptr->op_array.static_variables) {
-                       HashTable *static_variables = 
closure_fptr->op_array.static_variables;
-                       HashPosition pos;
-                       uint key_len;
-                       char* key;
-                       ulong num_index, index = 0;
-                       int count = zend_hash_num_elements(static_variables);
-                       if (count) {
-                               string_printf(str, "\n");
-                               string_printf(str, "%s  - Static Parameters 
[%d] {\n", indent, count);
+                       static_variables = 
closure_fptr->op_array.static_variables;
+                       count += zend_hash_num_elements(static_variables);
+               }
+               if (count) {
+                       string_printf(str, "\n");
+                       string_printf(str, "%s  - Static Parameters [%d] {\n", 
indent, count);
+                       if (closure_this) {
+                               string_printf(str, "%s    Parameter #%d [ %s 
$this ]\n", indent, ++index, Z_OBJCE_P(closure_this)->name);
+                       }
+                       if (static_variables) {
+                               HashPosition pos;
+                               uint key_len;
+                               char* key;
+                               ulong num_index;
                                
zend_hash_internal_pointer_reset_ex(static_variables, &pos);
                                while (index++ < count) {
                                        
zend_hash_get_current_key_ex(static_variables, &key, &key_len, &num_index, 0, 
&pos);
                                        string_printf(str, "%s    Parameter #%d 
[ $%s ]\n", indent, index++, key);
                                        
zend_hash_move_forward_ex(static_variables, &pos);
-                               }       
-                               string_printf(str, "%s  }\n", indent);
+                               }
                        }
+                       string_printf(str, "%s  }\n", indent);
                }
        }
        string_init(&param_indent);
@@ -5370,7 +5378,7 @@
        php_info_print_table_start();
        php_info_print_table_header(2, "Reflection", "enabled");
 
-       php_info_print_table_row(2, "Version", "$Revision: 1.164.2.33.2.45.2.48 
$");
+       php_info_print_table_row(2, "Version", "$Revision: 1.164.2.33.2.45.2.49 
$");
 
        php_info_print_table_end();
 } /* }}} */
@@ -5384,7 +5392,7 @@
        NULL,
        NULL,
        PHP_MINFO(reflection),
-       "$Revision: 1.164.2.33.2.45.2.48 $",
+       "$Revision: 1.164.2.33.2.45.2.49 $",
        STANDARD_MODULE_PROPERTIES
 }; /* }}} */
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to