allowdynamicproperties

ENTITY
This attribute is used to mark classes that allow dynamic properties.
[!NOTE]
Although attributes themselves are not inherited, the effect of the 
AllowDynamicProperties attribute is inherited. Child classes of a class marked with this attribute will also allow dynamic properties, even if they do not explicitly declare the attribute.
[!NOTE]
This attribute was introduced in PHP 8.2.0 as the explicit way to allow dynamic properties. Creating a dynamic property on a class that does not use this attribute, and that does not implement __get() or __set(), is deprecated.
ENTITY
#[\Attribute(\Attribute::TARGET_CLASS)]
final
AllowDynamicProperties
ENTITY
ENTITY
AllowDynamicProperties with a dynamic property
To enable dynamic properties, add 
#[\AllowDynamicProperties].
<?php
#[\AllowDynamicProperties]
class ValidExample { }
$obj = new ValidExample();
$obj->myDynamicProp = 1234;
?>
    
AllowDynamicProperties with non-existing property
As of PHP 8.2.0, the declaration is required unless the class uses this attribute. Creating an undeclared property on such a class emits a deprecation notice.
<?php
class InvalidExample { }
$obj = new InvalidExample();
$obj->myUnknownProperty = 1234;
?>
    
ENTITY
Deprecated: Creation of dynamic property InvalidExample::$myUnknownProperty is deprecated in file on line 5
AllowDynamicProperties with non-existing property in inherited class
     
<?php
class DefaultBehaviour { }
#[\AllowDynamicProperties]
class ClassAllowsDynamicProperties { }
class InheritedClassAllowsDynamicProperties extends ClassAllowsDynamicProperties { }
$o1 = new DefaultBehaviour();
$o2 = new InheritedClassAllowsDynamicProperties();
$o1->nonExistingProp = true;
$o2->nonExistingProp = true;
?>
    
ENTITY
Deprecated: Creation of dynamic property DefaultBehaviour::$nonExistingProp is deprecated in file on line 12
ENTITY
Attributes overview
ENTITY