# El atributo AllowDynamicProperties

(PHP 8 >= 8.2.0)

## Introducción

Este atributo se utiliza para marcar clases que permiten propiedades dinámicas.

> Nota: Aunque los atributos en sí no se heredan, el efecto del atributo `AllowDynamicProperties` sí se hereda. Las clases hijas de una clase marcada con este atributo también permitirán propiedades dinámicas, incluso si no declaran el atributo explícitamente.

## Sinopsis de la Clase

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

## Ejemplos

Las propiedades dinámicas están deprecadas a partir de PHP 8.2.0, por lo que usarlas sin marcar la clase con este atributo emitirá un aviso de deprecación.

Ejemplo #1 AllowDynamicProperties con propiedad inexistente

    <?php
    class DefaultBehaviour { }

    #[\AllowDynamicProperties]
    class ClassAllowsDynamicProperties { }

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

    $o1->nonExistingProp = true;
    $o2->nonExistingProp = true;
    ?>

Resultado del ejemplo anterior en PHP 8.2:

    Deprecated: Creation of dynamic property DefaultBehaviour::$nonExistingProp is deprecated in file on line 10

Ejemplo #2 AllowDynamicProperties con propiedad inexistente en clase heredada

    <?php
    class DefaultBehaviour { }

    #[\AllowDynamicProperties]
    class ClassAllowsDynamicProperties { }

    class InheritedClassAllowsDynamicProperties extends ClassAllowsDynamicProperties { }

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

    $o1->nonExistingProp = true;
    $o2->nonExistingProp = true;
    ?>

Resultado del ejemplo anterior en PHP 8.2:

    Deprecated: Creation of dynamic property DefaultBehaviour::$nonExistingProp is deprecated in file on line 12

## Ver también

Visión general de los atributos

## Tabla de contenidos

- AllowDynamicProperties::__construct — Construye una nueva instancia del atributo AllowDynamicProperties

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