Browse Source

Fixed bug #43483 (get_class_methods() does not list all visible methods)

PHP-5.2.1RC1
Dmitry Stogov 19 years ago
parent
commit
7eb1befffe
  1. 2
      NEWS
  2. 24
      Zend/tests/bug43483.phpt
  3. 2
      Zend/zend_builtin_functions.c

2
NEWS

@ -81,6 +81,8 @@ PHP NEWS
is not available). (Ilia)
- Fixed bug #43491 (Under certain conditions, file_exists() never returns).
(Dmitry)
- Fixed bug #43483 (get_class_methods() does not list all visible methods).
(Dmitry)
- Fixed bug #43482 (array_pad() does not warn on very small pad numbers).
(Ilia)
- Fixed bug #43457 (Prepared statement with incorrect parms doesn't throw

24
Zend/tests/bug43483.phpt

@ -0,0 +1,24 @@
--TEST--
Bug #43483 (get_class_methods() does not list all visible methods)
--FILE--
<?php
class C {
public static function test() {
D::prot();
print_r(get_class_methods("D"));
}
}
class D extends C {
protected static function prot() {
echo "Successfully called D::prot().\n";
}
}
D::test();
?>
--EXPECT--
Successfully called D::prot().
Array
(
[0] => prot
[1] => test
)

2
Zend/zend_builtin_functions.c

@ -867,7 +867,7 @@ ZEND_FUNCTION(get_class_methods)
if ((mptr->common.fn_flags & ZEND_ACC_PUBLIC)
|| (EG(scope) &&
(((mptr->common.fn_flags & ZEND_ACC_PROTECTED) &&
instanceof_function(EG(scope), mptr->common.scope TSRMLS_CC))
zend_check_protected(mptr->common.scope, EG(scope)))
|| ((mptr->common.fn_flags & ZEND_ACC_PRIVATE) &&
EG(scope) == mptr->common.scope)))) {
char *key;

Loading…
Cancel
Save