# Атрибут AllowDynamicProperties

(PHP 8 >= 8.2.0)

## Введение

Атрибут маркирует классы, в которых разрешается объявлять динамические свойства.

> Замечание: Разрешение объявлять динамические свойства, которое устанавливает атрибут `AllowDynamicProperties`, наследуется, хотя сами атрибуты не наследуются. Подкласс разрешит добавлять свойства динамически, если родительский класс разметили атрибутом.

## Обзор класса

#[\Attribute]
final class AllowDynamicProperties {
/* Методы */
public function __construct()
}

## Примеры

Динамические свойства устарели с PHP 8.2.0, поэтому объявление динамического свойства без маркировки класса атрибутом выдаст уведомление об устаревании.

Пример #1 Влияние атрибута AllowDynamicProperties на добавление динамических свойств

    <?php

    class DefaultBehaviour {}

    #[\AllowDynamicProperties]
    class ClassAllowsDynamicProperties {}

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

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

Результат выполнения приведённого примера в PHP 8.2:

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

Пример #2 Влияние атрибута AllowDynamicProperties на добавление динамических свойств в дочерних классах

    <?php

    class DefaultBehaviour {}

    #[\AllowDynamicProperties]
    class ClassAllowsDynamicProperties {}

    class InheritedClassAllowsDynamicProperties extends ClassAllowsDynamicProperties {}

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

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

Результат выполнения приведённого примера в PHP 8.2:

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

## Смотрите также

Введение в атрибуты

## Содержание

- AllowDynamicProperties::__construct — Создаёт новый экземпляр атрибута AllowDynamicProperties

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