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(¶m_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