Revert ReflectionType::__toString() behavior + deprecate

This commit is contained in:
Nikita Popov 2016-09-21 21:36:09 +02:00
parent 4c0804c07d
commit bf907b9961
9 changed files with 25 additions and 26 deletions

View File

@ -7,7 +7,7 @@ $r = new ReflectionMethod($f, '__invoke');
var_dump($r->getParameters()[0]->getName());
var_dump($r->getParameters()[0]->getClass());
echo $r->getParameters()[0], "\n";
echo $r->getReturnType(),"\n";
echo $r->getReturnType()->getName(), "\n";
echo $r,"\n";
?>
--EXPECT--

View File

@ -29,7 +29,7 @@ foreach ($callables as $callable) {
foreach ($refl->getParameters() as $param) {
if ($param->hasType()) {
$type = $param->getType();
echo $type->__toString() . "\n";
echo $type->getName() . "\n";
}
}
}

View File

@ -2158,7 +2158,7 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio
internal_function->prototype = NULL;
if (ptr->flags) {
if (!(ptr->flags & ZEND_ACC_PPP_MASK)) {
if (ptr->flags != ZEND_ACC_DEPRECATED || scope) {
if (ptr->flags != ZEND_ACC_DEPRECATED && scope) {
zend_error(error_type, "Invalid access level for %s%s%s() - access must be exactly one of public, protected or private", scope ? ZSTR_VAL(scope->name) : "", scope ? "::" : "", ptr->fname);
}
internal_function->fn_flags = ZEND_ACC_PUBLIC | ptr->flags;

View File

@ -3022,23 +3022,13 @@ ZEND_METHOD(reflection_type, __toString)
{
reflection_object *intern;
type_reference *param;
zend_string *str;
if (zend_parse_parameters_none() == FAILURE) {
return;
}
GET_REFLECTION_OBJECT_PTR(param);
str = reflection_type_name(param);
if (param->arg_info->allow_null) {
size_t orig_len = ZSTR_LEN(str);
str = zend_string_extend(str, orig_len + 1, 0);
memmove(ZSTR_VAL(str) + 1, ZSTR_VAL(str), orig_len + 1);
ZSTR_VAL(str)[0] = '?';
}
RETURN_STR(str);
RETURN_STR(reflection_type_name(param));
}
/* }}} */
@ -6711,7 +6701,7 @@ static const zend_function_entry reflection_type_functions[] = {
ZEND_ME(reflection, __clone, arginfo_reflection__void, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
ZEND_ME(reflection_type, allowsNull, arginfo_reflection__void, 0)
ZEND_ME(reflection_type, isBuiltin, arginfo_reflection__void, 0)
ZEND_ME(reflection_type, __toString, arginfo_reflection__void, 0)
ZEND_ME(reflection_type, __toString, arginfo_reflection__void, ZEND_ACC_DEPRECATED)
PHP_FE_END
};

View File

@ -32,10 +32,18 @@ var_dump((string) $return);
?>
--EXPECTF--
string(11) "Traversable"
string(12) "?Traversable"
Deprecated: Function ReflectionType::__toString() is deprecated in %s on line %d
string(11) "Traversable"
string(6) "string"
Deprecated: Function ReflectionType::__toString() is deprecated in %s on line %d
string(6) "string"
string(7) "?string"
string(4) "Test"
string(5) "?Test"
Deprecated: Function ReflectionType::__toString() is deprecated in %s on line %d
string(4) "Test"
string(4) "Test"
Deprecated: Function ReflectionType::__toString() is deprecated in %s on line %d
string(4) "Test"
string(5) "?Test"

View File

@ -28,7 +28,7 @@ foreach ([
if ($ra) {
var_dump($ra->allowsNull());
var_dump($ra->isBuiltin());
var_dump((string)$ra);
var_dump($ra->getName());
}
}
}
@ -48,7 +48,7 @@ foreach ([
if ($ra) {
var_dump($ra->allowsNull());
var_dump($ra->isBuiltin());
var_dump((string)$ra);
var_dump($ra->getName());
}
}
}
@ -70,7 +70,7 @@ foreach ([
if ($ra) {
var_dump($ra->allowsNull());
var_dump($ra->isBuiltin());
var_dump((string)$ra);
var_dump($ra->getName());
}
}
@ -96,7 +96,7 @@ string(8) "callable"
bool(true)
bool(true)
bool(false)
string(9) "?stdClass"
string(8) "stdClass"
** Function 0 - Parameter 4
bool(false)
** Function 0 - Parameter 5

View File

@ -9,7 +9,7 @@ $rp = $rm->getParameters()[0];
$rt = $rp->getType();
$rrt = $rm->getReturnType();
unset($rm, $rp);
var_dump((string) $rt, (string) $rrt);
var_dump($rt->getName(), $rrt->getName());
--EXPECT--
string(4) "Test"

View File

@ -17,7 +17,7 @@ $functions = [
foreach ($functions as $function) {
$reflectionFunc = new ReflectionFunction($function);
$returnType = $reflectionFunc->getReturnType();
var_dump($returnType->__toString());
var_dump($returnType->getName());
}
?>
--EXPECTF--

View File

@ -6,5 +6,6 @@ function test(iterable $arg) { }
var_dump((string)(new ReflectionParameter("test", 0))->getType());
?>
--EXPECT--
--EXPECTF--
Deprecated: Function ReflectionType::__toString() is deprecated in %s on line %d
string(8) "iterable"