# La classe AllowDynamicProperties

(PHP 8 >= 8.2.0)

## Introduction

Cet attribut est utilisé pour marquer les classes qui autorisent les propriétés dynamiques.

> Note: Bien que les attributs eux-mêmes ne soient pas hérités, l'effet de l'attribut `AllowDynamicProperties` l'est. Les classes enfants d'une classe marquée avec cet attribut autoriseront également les propriétés dynamiques, même si elles ne déclarent pas explicitement l'attribut.

## Synopsis de la classe

#[\Attribute]
final class AllowDynamicProperties {
/* Méthodes */
public function __construct()
}

## Exemples

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 d'obsolescence.

Exemple #1 AllowDynamicProperties avec une propriété inexistante

    <?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

Exemple #2 AllowDynamicProperties avec une propriété inexistante dans une classe héritée

    <?php
    class DefaultBehaviour { }

    #[\AllowDynamicProperties]
    class ClassAllowsDynamicProperties { }

    class InheritedClassAllowsDynamicProperties extends ClassAllowsDynamicProperties { }

    $o1 = new DefaultBehaviour();
    $o2 = new InheritedClassAllowsDynamicProperties();

    $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 12

## Voir aussi

Aperçu des attributs

## Sommaire

- AllowDynamicProperties::__construct — Construit une nouvelle instance d'attribut AllowDynamicProperties

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open