com php-src: Remove bogus ctor checks in get_class_methods () + reflection: Zend/zend_builtin_functions. c ext/reflection/php_reflection.c

From: Date: Thu, 14 Feb 2019 10:47:31 +0000
Subject: com php-src: Remove bogus ctor checks in get_class_methods () + reflection: Zend/zend_builtin_functions. c ext/reflection/php_reflection.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-104629@lists.php.net to get a copy of this message
Commit: 1a5cff334d5f93336f3ee645dd73c9297ed24056 Author: Nikita Popov <nikita.ppv@gmail.com> Thu, 14 Feb 2019 11:28:13 +0100 Parents: 43a7d95016761787cace63fb52e93e27e123d0cc Branches: PHP-7.4 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=1a5cff334d5f93336f3ee645dd73c9297ed24056 Log: Remove bogus ctor checks in get_class_methods() + reflection Contrary to the comments, these only hide constructors (old or new style) if they a) are inherited b) come from a trait and c) are aliased -- which doesn't make any sense at all. Changed paths: M Zend/zend_builtin_functions.c M ext/reflection/php_reflection.c Diff: diff --git a/Zend/zend_builtin_functions..c b/Zend/zend_builtin_functions.c index 93bbd3b..2b16991 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1284,26 +1284,16 @@ ZEND_FUNCTION(get_class_methods) (((mptr->common.fn_flags & ZEND_ACC_PROTECTED) && zend_check_protected(mptr->common.scope, scope)) || ((mptr->common.fn_flags & ZEND_ACC_PRIVATE) && - scope == mptr->common.scope)))) { - size_t len = ZSTR_LEN(mptr->common.function_name); - - /* Do not display old-style inherited constructors */ - if (!key) { + scope == mptr->common.scope))) + ) { + if (mptr->type == ZEND_USER_FUNCTION && + (!mptr->op_array.refcount || *mptr->op_array.refcount > 1) && + key && !same_name(key, mptr->common.function_name)) { + ZVAL_STR_COPY(&method_name, zend_find_alias_name(mptr->common.scope, key)); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &method_name); + } else { ZVAL_STR_COPY(&method_name, mptr->common.function_name); zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &method_name); - } else if ((mptr->common.fn_flags & ZEND_ACC_CTOR) == 0 || - mptr->common.scope == ce || - zend_binary_strcasecmp(ZSTR_VAL(key), ZSTR_LEN(key), ZSTR_VAL(mptr->common.function_name), len) == 0) { - - if (mptr->type == ZEND_USER_FUNCTION && - (!mptr->op_array.refcount || *mptr->op_array.refcount > 1) && - !same_name(key, mptr->common.function_name)) { - ZVAL_STR_COPY(&method_name, zend_find_alias_name(mptr->common.scope, key)); - zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &method_name); - } else { - ZVAL_STR_COPY(&method_name, mptr->common.function_name); - zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &method_name); - } } } } ZEND_HASH_FOREACH_END(); diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 8bfafe7..1773745 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -474,36 +474,26 @@ static void _class_string(smart_str *str, zend_class_entry *ce, zval *obj, char count = zend_hash_num_elements(&ce->function_table) - count_static_funcs; if (count > 0) { zend_function *mptr; - zend_string *key; smart_str method_str = {0}; count = 0; - ZEND_HASH_FOREACH_STR_KEY_PTR(&ce->function_table, key, mptr) { + ZEND_HASH_FOREACH_PTR(&ce->function_table, mptr) { if ((mptr->common.fn_flags & ZEND_ACC_STATIC) == 0 && ((mptr->common.fn_flags & ZEND_ACC_PRIVATE) == 0 || mptr->common.scope == ce)) { - size_t len = ZSTR_LEN(mptr->common.function_name); - - /* Do not display old-style inherited constructors */ - if ((mptr->common.fn_flags & ZEND_ACC_CTOR) == 0 - || mptr->common.scope == ce - || !key - || zend_binary_strcasecmp(ZSTR_VAL(key), ZSTR_LEN(key), ZSTR_VAL(mptr->common.function_name), len) == 0) + zend_function *closure; + /* see if this is a closure */ + if (obj && is_closure_invoke(ce, mptr->common.function_name) + && (closure = zend_get_closure_invoke_method(Z_OBJ_P(obj))) != NULL) { - zend_function *closure; - /* see if this is a closure */ - if (obj && is_closure_invoke(ce, mptr->common.function_name) - && (closure = zend_get_closure_invoke_method(Z_OBJ_P(obj))) != NULL) - { - mptr = closure; - } else { - closure = NULL; - } - smart_str_appendc(&method_str, '\n'); - _function_string(&method_str, mptr, ce, ZSTR_VAL(sub_indent)); - count++; - _free_function(closure); + mptr = closure; + } else { + closure = NULL; } + smart_str_appendc(&method_str, '\n'); + _function_string(&method_str, mptr, ce, ZSTR_VAL(sub_indent)); + count++; + _free_function(closure); } } ZEND_HASH_FOREACH_END(); smart_str_append_printf(str, "\n%s - Methods [%d] {", indent, count);

« previous php.cvs (#104629) next »