@@ -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,
@@ -178,6 +180,11 @@ PHP 8.5 UPGRADE NOTES
178180 RFC: https://wiki.php.net/rfc/pipe-operator-v3
179181 . Constructor property promotion can now be used for final properties.
180182 RFC: https://wiki.php.net/rfc/final_promotion
183+ . The #[\DelayedTargetValidation] attribute can be used to suppress
184+ compile-time errors from core (or extension) attributes that are used on
185+ invalid targets. These errors are instead reported at runtime if and when
186+ ReflectionAttribute::newInstance() is called.
187+ RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute
181188
182189- Curl:
183190 . Added support for share handles that are persisted across multiple PHP
@@ -470,6 +477,11 @@ PHP 8.5 UPGRADE NOTES
470477 hooks are final, and whether the property is virtual. This also affects
471478 the output of ReflectionClass::__toString() when a class contains hooked
472479 properties.
480+ . ReflectionAttribute::newInstance() can now throw errors for internal
481+ attributes if the attribute was applied on an invalid target and the
482+ error was delayed from compile-time to runtime via the
483+ #[\DelayedTargetValidation] attribute.
484+ RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute
473485
474486- Session:
475487 . session_start is stricter in regard to the option argument.
@@ -587,6 +599,12 @@ PHP 8.5 UPGRADE NOTES
5875997. New Classes and Interfaces
588600========================================
589601
602+ - Core:
603+ . DelayedTargetValidation is an attribute that, when added, delays any errors
604+ from *other* internal attributes about being applied to invalid targets from
605+ compile-time to runtime.
606+ RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute
607+
590608- Curl:
591609 . CurlSharePersistentHandle representing a share handle that is persisted
592610 across multiple PHP requests.
0 commit comments