(PHP 8 >= 8.2.0)
Cet attribut est utilisé pour marquer les classes qui autorisent les propriétés dynamiques.
Les propriétés dynamiques sont obsolètes à partir de PHP 8.2.0, donc les utiliser sans marquer la classe avec cet attribut émettra un avis de d'obsolescence.
<?php
class DefaultBehaviour { }
#[\AllowDynamicProperties]
class ClassAllowsDynamicProperties { }
$o1 = new DefaultBehaviour();
$o2 = new ClassAllowsDynamicProperties();
$o1->nonExistingProp = true;
$o2->nonExistingProp = true;
?>
Résultat de l'exemple ci-dessus en PHP 8.2 :
Deprecated: Creation of dynamic property DefaultBehaviour::$nonExistingProp is deprecated in file on line 10