diff --git a/language/oop5/properties.xml b/language/oop5/properties.xml index 9926c7107..d68a8e00e 100644 --- a/language/oop5/properties.xml +++ b/language/oop5/properties.xml @@ -1,5 +1,5 @@ - + Propiedades @@ -16,7 +16,7 @@ a partir de PHP 7.4, de una declaración de tipo, seguida de una declaración clásica de variable. Esta declaración puede incluir una inicialización, pero esta debe - ser un valor constante + ser un valor constante. @@ -420,16 +420,24 @@ var_dump($test2->prop); // NULL Esta propiedad creada dinámicamente estará únicamente disponible en esta instancia de clase. - + + Las propiedades dinámicas son compatibles con + stdClass y sus subclases. Otras clases + pueden habilitar un comportamiento similar con + AllowDynamicProperties o + la sobrecarga de propiedades. + - Las propiedades dinámicas están obsoletas a partir de PHP 8.2.0. + Crear una propiedad dinámica está deprecado a partir de PHP 8.2.0, + a menos que la clase esté marcada con el atributo + #[\AllowDynamicProperties]. Se recomienda declarar la propiedad en su lugar. Para manejar nombres de propiedades arbitrarios, la clase debería implementar los métodos mágicos __get() y __set(). - Como último recurso, la clase puede ser marcada con el atributo - #[\AllowDynamicProperties]. + Marcar la clase con el atributo sigue siendo una opción, pero + generalmente se considera un último recurso. diff --git a/language/predefined/attributes/allowdynamicproperties.xml b/language/predefined/attributes/allowdynamicproperties.xml index 7aa129c09..e3ab8554f 100644 --- a/language/predefined/attributes/allowdynamicproperties.xml +++ b/language/predefined/attributes/allowdynamicproperties.xml @@ -1,5 +1,5 @@ - + El atributo AllowDynamicProperties @@ -22,6 +22,15 @@ explícitamente. + + + Este atributo se introdujo en PHP 8.2.0 como la forma explícita de + permitir propiedades dinámicas. Crear una propiedad dinámica en una clase + que no utiliza este atributo, y que no implementa + __get() ni + __set(), está deprecado. + +
@@ -42,33 +51,47 @@
&reftitle.examples; - - 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. - - AllowDynamicProperties con propiedad inexistente + AllowDynamicProperties con una propiedad dinámica + + Para habilitar las propiedades dinámicas, añada + #[\AllowDynamicProperties]. + myDynamicProp = 1234; +?> +]]> + + -$o1->nonExistingProp = true; -$o2->nonExistingProp = true; + + AllowDynamicProperties con propiedad inexistente + + A partir de PHP 8.2.0, la declaración es obligatoria a menos que la clase + utilice este atributo. Crear una propiedad no declarada en una clase de + este tipo emite un aviso de deprecación. + + + +myUnknownProperty = 1234; ?> ]]> &example.outputs.82;