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