Атрибут AllowDynamicProperties

(PHP 8 >= 8.2.0)

Введение

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

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

Обзор класса

#[\Attribute]
final class AllowDynamicProperties {
/* Методы */
public __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

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

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

Содержание

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top