PHP 8.4.24 Released!

The AllowDynamicProperties attribute

(PHP 8 >= 8.2.0)

Вступ

This attribute is used to mark classes that allow dynamic properties.

Зауваження: Although attributes themselves are not inherited, the effect of the AllowDynamicProperties attribute is inherited. Child classes of a class marked with this attribute will also allow dynamic properties, even if they do not explicitly declare the attribute.

Короткий огляд класу

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

Приклади

Dynamic properties are deprecated as of PHP 8.2.0, thus using them without marking the class with this attribute will emit a deprecation notice.

Приклад #1 AllowDynamicProperties with non-existing property

<?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 with non-existing property in inherited class

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

Прогляньте також

Attributes overview

Зміст

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top