@@ -53,6 +53,8 @@ PHP 8.5 UPGRADE NOTES
5353 . Applying #[\Attribute] to an abstract class, enum, interface, or trait triggers
5454 an error during compilation. Previously, the attribute could be added, but when
5555 ReflectionAttribute::newInstance() was called an error would be thrown.
56+ The error can be delayed from compilation to runtime using the new
57+ #[\DelayedTargetValidation] attribute.
5658
5759- DOM:
5860 . Cloning a DOMNamedNodeMap, DOMNodeList, Dom\NamedNodeMap, Dom\NodeList,
@@ -180,6 +182,11 @@ PHP 8.5 UPGRADE NOTES
180182 RFC: https://wiki.php.net/rfc/final_promotion
181183 . #[\Override] can now be applied to properties.
182184 RFC: https://wiki.php.net/rfc/override_properties
185+ . The #[\DelayedTargetValidation] attribute can be used to suppress
186+ compile-time errors from core (or extension) attributes that are used on
187+ invalid targets. These errors are instead reported at runtime if and when
188+ ReflectionAttribute::newInstance() is called.
189+ RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute
183190
184191- Curl:
185192 . Added support for share handles that are persisted across multiple PHP
@@ -506,6 +513,11 @@ PHP 8.5 UPGRADE NOTES
506513 hooks are final, and whether the property is virtual. This also affects
507514 the output of ReflectionClass::__toString() when a class contains hooked
508515 properties.
516+ . ReflectionAttribute::newInstance() can now throw errors for internal
517+ attributes if the attribute was applied on an invalid target and the
518+ error was delayed from compile-time to runtime via the
519+ #[\DelayedTargetValidation] attribute.
520+ RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute
509521
510522- Session:
511523 . session_start is stricter in regard to the option argument.
@@ -623,6 +635,12 @@ PHP 8.5 UPGRADE NOTES
6236357. New Classes and Interfaces
624636========================================
625637
638+ - Core:
639+ . DelayedTargetValidation is an attribute that, when added, delays any errors
640+ from *other* internal attributes about being applied to invalid targets from
641+ compile-time to runtime.
642+ RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute
643+
626644- Curl:
627645 . CurlSharePersistentHandle representing a share handle that is persisted
628646 across multiple PHP requests.
0 commit comments