(PHP 8 >= 8.2.0)
ΠΡΡΠΈΠ±ΡΡ ΠΌΠ°ΡΠΊΠΈΡΡΠ΅Ρ ΠΊΠ»Π°ΡΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π°ΡΡΠΈΠ±ΡΡ
AllowDynamicProperties, Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ, Ρ ΠΎΡΡ ΡΠ°ΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΡ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ. ΠΠΎΠ΄ΠΊΠ»Π°ΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΈΠ»ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΡΡΠ°ΡΠ΅Π»ΠΈ Ρ 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