Fix bug in reflectionClass relate to #64239

This commit is contained in:
Xinchen Hui 2013-03-21 21:29:02 +08:00
parent 7dce0194c8
commit 39a173b79b
2 changed files with 46 additions and 1 deletions

View File

@ -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);

View File

@ -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"