From 116140013f58817b5d26fc095b1211210a4a8637 Mon Sep 17 00:00:00 2001 From: lacatoire Date: Wed, 30 Sep 2026 09:51:47 +0200 Subject: [PATCH] [Sync-En] Dynamic properties: clarify scope of deprecation --- language/oop5/properties.xml | 20 ++++--- .../attributes/allowdynamicproperties.xml | 53 +++++++++++++------ 2 files changed, 52 insertions(+), 21 deletions(-) diff --git a/language/oop5/properties.xml b/language/oop5/properties.xml index 132561d4e8..1a8657f14f 100644 --- a/language/oop5/properties.xml +++ b/language/oop5/properties.xml @@ -1,5 +1,5 @@ - + Propriétés @@ -420,23 +420,31 @@ var_dump($test2->prop); // NULL - Propriétés Dynamiques + Propriétés dynamiques Lors d'une tentative d'assignation à une propriété non existante sur un &object;, PHP créera automatiquement une propriété correspondante. Cette propriété créée dynamiquement sera uniquement disponible sur cette instance de classe. - + + Les propriétés dynamiques sont supportées par + stdClass et ses classes filles. + Les autres classes peuvent activer un comportement similaire avec + AllowDynamicProperties + ou la surcharge de propriétés. + - Les propriétés dynamiques sont obsolètes à partir de PHP 8.2.0. + La création d'une propriété dynamique est obsolète à partir de PHP 8.2.0, + sauf si la classe est marquée avec l'attribut + #[\AllowDynamicProperties]. Il est recommandé de déclarer la propriété à la place. Pour gérer des noms de propriétés arbitraires, la classe devrait implémenter les méthodes magiques __get() et __set(). - En dernier recours, la classe peut être marquée avec l'attribut - #[\AllowDynamicProperties]. + Marquer la classe avec l'attribut reste une option, mais est + généralement considéré comme un dernier recours. diff --git a/language/predefined/attributes/allowdynamicproperties.xml b/language/predefined/attributes/allowdynamicproperties.xml index e255e6b896..054c423757 100644 --- a/language/predefined/attributes/allowdynamicproperties.xml +++ b/language/predefined/attributes/allowdynamicproperties.xml @@ -1,5 +1,5 @@ - + La classe AllowDynamicProperties AllowDynamicProperties @@ -20,6 +20,15 @@ les propriétés dynamiques, même si elles ne déclarent pas explicitement l'attribut. + + + Cet attribut a été introduit en PHP 8.2.0 comme moyen explicite + d'autoriser les propriétés dynamiques. La création d'une propriété + dynamique sur une classe qui n'utilise pas cet attribut, et qui + n'implémente ni __get() ni + __set(), est obsolète. + +
@@ -40,33 +49,47 @@
&reftitle.examples; - - Les propriétés dynamiques sont obsolètes à partir de PHP 8.2.0, - donc les utiliser sans marquer la classe avec cet attribut émettra - un avis d'obsolescence. - - AllowDynamicProperties avec une propriété inexistante + AllowDynamicProperties avec une propriété dynamique + + Pour activer les propriétés dynamiques, ajouter + #[\AllowDynamicProperties]. + myDynamicProp = 1234; +?> +]]> + + -$o1->nonExistingProp = true; -$o2->nonExistingProp = true; + + AllowDynamicProperties avec une propriété inexistante + + À partir de PHP 8.2.0, la déclaration est requise, sauf si la classe + utilise cet attribut. La création d'une propriété non déclarée + sur une telle classe émet un avis d'obsolescence. + + + +myUnknownProperty = 1234; ?> ]]> &example.outputs.82;