mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
reflection: Deprecate Reflection*::setAccessible()
(#19273)
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionsetaccessible
This commit is contained in:
parent
732069d98b
commit
922c225fbf
7 changed files with 48 additions and 10 deletions
|
@ -226,6 +226,7 @@ class ReflectionMethod extends ReflectionFunctionAbstract
|
||||||
public function hasPrototype(): bool {}
|
public function hasPrototype(): bool {}
|
||||||
|
|
||||||
/** @tentative-return-type */
|
/** @tentative-return-type */
|
||||||
|
#[\Deprecated(since: '8.5', message: "as it has no effect")]
|
||||||
public function setAccessible(bool $accessible): void {}
|
public function setAccessible(bool $accessible): void {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -542,6 +543,7 @@ class ReflectionProperty implements Reflector
|
||||||
public function getDocComment(): string|false {}
|
public function getDocComment(): string|false {}
|
||||||
|
|
||||||
/** @tentative-return-type */
|
/** @tentative-return-type */
|
||||||
|
#[\Deprecated(since: '8.5', message: "as it has no effect")]
|
||||||
public function setAccessible(bool $accessible): void {}
|
public function setAccessible(bool $accessible): void {}
|
||||||
|
|
||||||
/** @tentative-return-type */
|
/** @tentative-return-type */
|
||||||
|
|
22
ext/reflection/php_reflection_arginfo.h
generated
22
ext/reflection/php_reflection_arginfo.h
generated
|
@ -1,5 +1,5 @@
|
||||||
/* This is a generated file, edit the .stub.php file instead.
|
/* This is a generated file, edit the .stub.php file instead.
|
||||||
* Stub hash: ef9e7f30a29819489e17a9c100f55696d5d164e0 */
|
* Stub hash: 0f6ecac0c6c4fb4af140a1be95f6a50c7532dae9 */
|
||||||
|
|
||||||
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 1, IS_ARRAY, 0)
|
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 1, IS_ARRAY, 0)
|
||||||
ZEND_ARG_TYPE_INFO(0, modifiers, IS_LONG, 0)
|
ZEND_ARG_TYPE_INFO(0, modifiers, IS_LONG, 0)
|
||||||
|
@ -1076,7 +1076,7 @@ static const zend_function_entry class_ReflectionMethod_methods[] = {
|
||||||
ZEND_ME(ReflectionMethod, getDeclaringClass, arginfo_class_ReflectionMethod_getDeclaringClass, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionMethod, getDeclaringClass, arginfo_class_ReflectionMethod_getDeclaringClass, ZEND_ACC_PUBLIC)
|
||||||
ZEND_ME(ReflectionMethod, getPrototype, arginfo_class_ReflectionMethod_getPrototype, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionMethod, getPrototype, arginfo_class_ReflectionMethod_getPrototype, ZEND_ACC_PUBLIC)
|
||||||
ZEND_ME(ReflectionMethod, hasPrototype, arginfo_class_ReflectionMethod_hasPrototype, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionMethod, hasPrototype, arginfo_class_ReflectionMethod_hasPrototype, ZEND_ACC_PUBLIC)
|
||||||
ZEND_ME(ReflectionMethod, setAccessible, arginfo_class_ReflectionMethod_setAccessible, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionMethod, setAccessible, arginfo_class_ReflectionMethod_setAccessible, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED)
|
||||||
ZEND_FE_END
|
ZEND_FE_END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1182,7 +1182,7 @@ static const zend_function_entry class_ReflectionProperty_methods[] = {
|
||||||
ZEND_ME(ReflectionProperty, getModifiers, arginfo_class_ReflectionProperty_getModifiers, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionProperty, getModifiers, arginfo_class_ReflectionProperty_getModifiers, ZEND_ACC_PUBLIC)
|
||||||
ZEND_ME(ReflectionProperty, getDeclaringClass, arginfo_class_ReflectionProperty_getDeclaringClass, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionProperty, getDeclaringClass, arginfo_class_ReflectionProperty_getDeclaringClass, ZEND_ACC_PUBLIC)
|
||||||
ZEND_ME(ReflectionProperty, getDocComment, arginfo_class_ReflectionProperty_getDocComment, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionProperty, getDocComment, arginfo_class_ReflectionProperty_getDocComment, ZEND_ACC_PUBLIC)
|
||||||
ZEND_ME(ReflectionProperty, setAccessible, arginfo_class_ReflectionProperty_setAccessible, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionProperty, setAccessible, arginfo_class_ReflectionProperty_setAccessible, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED)
|
||||||
ZEND_ME(ReflectionProperty, getType, arginfo_class_ReflectionProperty_getType, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionProperty, getType, arginfo_class_ReflectionProperty_getType, ZEND_ACC_PUBLIC)
|
||||||
ZEND_ME(ReflectionProperty, getSettableType, arginfo_class_ReflectionProperty_getSettableType, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionProperty, getSettableType, arginfo_class_ReflectionProperty_getSettableType, ZEND_ACC_PUBLIC)
|
||||||
ZEND_ME(ReflectionProperty, hasType, arginfo_class_ReflectionProperty_hasType, ZEND_ACC_PUBLIC)
|
ZEND_ME(ReflectionProperty, hasType, arginfo_class_ReflectionProperty_hasType, ZEND_ACC_PUBLIC)
|
||||||
|
@ -1493,6 +1493,14 @@ static zend_class_entry *register_class_ReflectionMethod(zend_class_entry *class
|
||||||
ZVAL_UNDEF(&property_class_default_value);
|
ZVAL_UNDEF(&property_class_default_value);
|
||||||
zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CLASS), &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
|
zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CLASS), &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
|
||||||
|
|
||||||
|
|
||||||
|
zend_attribute *attribute_Deprecated_func_setaccessible_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "setaccessible", sizeof("setaccessible") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
|
||||||
|
ZVAL_STR(&attribute_Deprecated_func_setaccessible_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
|
||||||
|
attribute_Deprecated_func_setaccessible_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
|
||||||
|
zend_string *attribute_Deprecated_func_setaccessible_0_arg1_str = zend_string_init("as it has no effect", strlen("as it has no effect"), 1);
|
||||||
|
ZVAL_STR(&attribute_Deprecated_func_setaccessible_0->args[1].value, attribute_Deprecated_func_setaccessible_0_arg1_str);
|
||||||
|
attribute_Deprecated_func_setaccessible_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
|
||||||
|
|
||||||
return class_entry;
|
return class_entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1650,6 +1658,14 @@ static zend_class_entry *register_class_ReflectionProperty(zend_class_entry *cla
|
||||||
ZVAL_UNDEF(&property_class_default_value);
|
ZVAL_UNDEF(&property_class_default_value);
|
||||||
zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CLASS), &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
|
zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CLASS), &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
|
||||||
|
|
||||||
|
|
||||||
|
zend_attribute *attribute_Deprecated_func_setaccessible_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "setaccessible", sizeof("setaccessible") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
|
||||||
|
ZVAL_STR(&attribute_Deprecated_func_setaccessible_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
|
||||||
|
attribute_Deprecated_func_setaccessible_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
|
||||||
|
zend_string *attribute_Deprecated_func_setaccessible_0_arg1_str = zend_string_init("as it has no effect", strlen("as it has no effect"), 1);
|
||||||
|
ZVAL_STR(&attribute_Deprecated_func_setaccessible_0->args[1].value, attribute_Deprecated_func_setaccessible_0_arg1_str);
|
||||||
|
attribute_Deprecated_func_setaccessible_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
|
||||||
|
|
||||||
return class_entry;
|
return class_entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ $protected->invokeArgs(new A, array(NULL));
|
||||||
$protectedStatic->invoke(NULL, NULL);
|
$protectedStatic->invoke(NULL, NULL);
|
||||||
$protectedStatic->invokeArgs(NULL, array(NULL));
|
$protectedStatic->invokeArgs(NULL, array(NULL));
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
A::aPrivate
|
A::aPrivate
|
||||||
A::aPrivate
|
A::aPrivate
|
||||||
A::aPrivateStatic
|
A::aPrivateStatic
|
||||||
|
@ -46,6 +46,14 @@ A::aProtected
|
||||||
A::aProtected
|
A::aProtected
|
||||||
A::aProtectedStatic
|
A::aProtectedStatic
|
||||||
A::aProtectedStatic
|
A::aProtectedStatic
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionMethod::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionMethod::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionMethod::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionMethod::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
A::aPrivate
|
A::aPrivate
|
||||||
A::aPrivate
|
A::aPrivate
|
||||||
A::aPrivateStatic
|
A::aPrivateStatic
|
||||||
|
|
|
@ -95,6 +95,14 @@ string(1) "e"
|
||||||
string(1) "f"
|
string(1) "f"
|
||||||
string(1) "g"
|
string(1) "g"
|
||||||
string(1) "h"
|
string(1) "h"
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionProperty::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionProperty::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionProperty::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionProperty::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
string(1) "e"
|
string(1) "e"
|
||||||
string(1) "f"
|
string(1) "f"
|
||||||
string(1) "g"
|
string(1) "g"
|
||||||
|
@ -111,6 +119,12 @@ string(1) "c"
|
||||||
string(1) "e"
|
string(1) "e"
|
||||||
string(1) "f"
|
string(1) "f"
|
||||||
string(1) "g"
|
string(1) "g"
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionProperty::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionProperty::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: Method ReflectionProperty::setAccessible() is deprecated since 8.5, as it has no effect in %s on line %d
|
||||||
string(1) "e"
|
string(1) "e"
|
||||||
string(1) "f"
|
string(1) "f"
|
||||||
string(1) "g"
|
string(1) "g"
|
||||||
|
|
|
@ -22,7 +22,6 @@ $b = new B();
|
||||||
|
|
||||||
$reflector = new ReflectionClass($b);
|
$reflector = new ReflectionClass($b);
|
||||||
$property = $reflector->getProperty('prop2');
|
$property = $reflector->getProperty('prop2');
|
||||||
$property->setAccessible(true);
|
|
||||||
$property->setValue($b, new A());
|
$property->setValue($b, new A());
|
||||||
|
|
||||||
var_dump($b);
|
var_dump($b);
|
||||||
|
|
|
@ -47,7 +47,6 @@ try {
|
||||||
} catch (ReflectionException $e) {
|
} catch (ReflectionException $e) {
|
||||||
echo $e->getMessage(), "\n";
|
echo $e->getMessage(), "\n";
|
||||||
}
|
}
|
||||||
$s->setAccessible(true);
|
|
||||||
$s->invoke($test, 42);
|
$s->invoke($test, 42);
|
||||||
var_dump($test->prop2);
|
var_dump($test->prop2);
|
||||||
dumpFlags($rp2);
|
dumpFlags($rp2);
|
||||||
|
|
|
@ -19,7 +19,7 @@ class A {
|
||||||
}
|
}
|
||||||
|
|
||||||
$property = new MyReflectionProperty('A', 'protected');
|
$property = new MyReflectionProperty('A', 'protected');
|
||||||
$property->setAccessible(true);
|
$property->isStatic();
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
|
@ -28,7 +28,7 @@ $property->setAccessible(true);
|
||||||
<!-- init ReflectionProperty::__construct() -->
|
<!-- init ReflectionProperty::__construct() -->
|
||||||
<ReflectionProperty::__construct>
|
<ReflectionProperty::__construct>
|
||||||
</ReflectionProperty::__construct:NULL>
|
</ReflectionProperty::__construct:NULL>
|
||||||
<!-- init ReflectionProperty::setAccessible() -->
|
<!-- init ReflectionProperty::isStatic() -->
|
||||||
<ReflectionProperty::setAccessible>
|
<ReflectionProperty::isStatic>
|
||||||
</ReflectionProperty::setAccessible:NULL>
|
</ReflectionProperty::isStatic:false>
|
||||||
</file '%s'>
|
</file '%s'>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue