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

Tabla de contenidos

add a note

User Contributed Notes

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