From: Xinchen Hui Date: Thu, 21 Mar 2013 13:29:02 +0000 (+0800) Subject: Fix bug in reflectionClass relate to #64239 X-Git-Tag: php-5.4.14RC1~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=39a173b79bcb5b77ef28c83c7da65621e78e717a;p=php Fix bug in reflectionClass relate to #64239 --- diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 25ecbad68e..6c4d806236 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -1298,7 +1298,8 @@ static void reflection_method_factory(zend_class_entry *ce, zend_function *metho } MAKE_STD_ZVAL(name); MAKE_STD_ZVAL(classname); - ZVAL_STRING(name, method->common.function_name, 1); + ZVAL_STRING(name, (method->common.scope && method->common.scope->trait_aliases)? + zend_resolve_method_name(ce, method) : method->common.function_name, 1); ZVAL_STRINGL(classname, method->common.scope->name, method->common.scope->name_length, 1); reflection_instantiate(reflection_method_ptr, object TSRMLS_CC); intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC); diff --git a/ext/reflection/tests/bug64239.phpt b/ext/reflection/tests/bug64239.phpt new file mode 100644 index 0000000000..9acdc1987b --- /dev/null +++ b/ext/reflection/tests/bug64239.phpt @@ -0,0 +1,44 @@ +--TEST-- +Bug #64239 (ReflectionClass::getMethods() changed behavior) +--FILE-- +getMethods()); +print_r(($method = $obj->getMethod("Bmethod"))); +var_dump($method->getName()); +var_dump($method->getShortName()); +?> +--EXPECT-- +Array +( + [0] => ReflectionMethod Object + ( + [name] => Bmethod + [class] => A + ) + + [1] => ReflectionMethod Object + ( + [name] => t2method + [class] => A + ) + +) +ReflectionMethod Object +( + [name] => Bmethod + [class] => A +) +string(7) "Bmethod" +string(7) "Bmethod"