helly Wed Jan 16 14:19:07 2008 UTC Added files: /php-src/ext/reflection/tests bug37964.phpt
Modified files: /php-src/ext/reflection php_reflection.c Log: - Fixed Bug #37964 (Reflection shows private methods of parent class) ([EMAIL PROTECTED]) http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.289&r2=1.290&diff_format=u Index: php-src/ext/reflection/php_reflection.c diff -u php-src/ext/reflection/php_reflection.c:1.289 php-src/ext/reflection/php_reflection.c:1.290 --- php-src/ext/reflection/php_reflection.c:1.289 Mon Dec 31 07:12:14 2007 +++ php-src/ext/reflection/php_reflection.c Wed Jan 16 14:19:07 2008 @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_reflection.c,v 1.289 2007/12/31 07:12:14 sebastian Exp $ */ +/* $Id: php_reflection.c,v 1.290 2008/01/16 14:19:07 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -519,7 +519,8 @@ zend_hash_internal_pointer_reset_ex(&ce->function_table, &pos); while (zend_hash_get_current_data_ex(&ce->function_table, (void **) &mptr, &pos) == SUCCESS) { - if (!(mptr->common.fn_flags & ZEND_ACC_STATIC)) { + if ((mptr->common.fn_flags & ZEND_ACC_STATIC) == 0 && + ((mptr->common.fn_flags & ZEND_ACC_PRIVATE) == 0 || mptr->common.scope == ce)) { zstr key; uint key_len; ulong num_index; @@ -541,6 +542,9 @@ zend_hash_move_forward_ex(&ce->function_table, &pos); } string_printf(str, "\n%s - Methods [%d] {", indent, count); + if (!count) { + string_printf(str, "\n"); + } string_append(str, &dyn); string_free(&dyn); } else { @@ -5028,7 +5032,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.289 2007/12/31 07:12:14 sebastian Exp $"); + php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 1.290 2008/01/16 14:19:07 helly Exp $"); php_info_print_table_end(); } /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug37964.phpt?view=markup&rev=1.1 Index: php-src/ext/reflection/tests/bug37964.phpt +++ php-src/ext/reflection/tests/bug37964.phpt --TEST-- Reflection Bug #37964 (Reflection shows private methods of parent class) --FILE-- <?php abstract class foobar { private function test2() { } } class foo extends foobar { private $foo = 1; private function test() { } protected function test3() { } } class bar extends foo { private function foobar() { } } Reflection::export(new ReflectionClass(new bar)); ?> --EXPECTF-- Class [ <user> class bar extends foo ] { @@ %s %s - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [0] { } - Methods [2] { Method [ <user> private method foobar ] { @@ %s %d - %d } Method [ <user, inherits foo> protected method test3 ] { @@ %s %d - %d } } } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php