Commit: 39a173b79bcb5b77ef28c83c7da65621e78e717a Author: Xinchen Hui <larue...@php.net> Thu, 21 Mar 2013 21:29:02 +0800 Parents: 7dce0194c815cdc75a780b6471660042aed7bd7a Branches: PHP-5.4
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=39a173b79bcb5b77ef28c83c7da65621e78e717a Log: Fix bug in reflectionClass relate to #64239 Bugs: https://bugs.php.net/64239 Changed paths: M ext/reflection/php_reflection.c A ext/reflection/tests/bug64239.phpt Diff: diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 25ecbad..6c4d806 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 0000000..9acdc19 --- /dev/null +++ b/ext/reflection/tests/bug64239.phpt @@ -0,0 +1,44 @@ +--TEST-- +Bug #64239 (ReflectionClass::getMethods() changed behavior) +--FILE-- +<?php +class A { + use T2 { t2method as Bmethod; } +} +trait T2 { + public function t2method() { + } +} + +class B extends A{ +} + +$obj = new ReflectionClass("B"); +print_r($obj->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" -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php