__get()
et __set()
pour empêcher ou contrôler efficacement la façon dont les propriétés dynamiques sont définies et récupérées.Code : Tout sélectionner
class User {
private int $uid;
}
$user = new User();
$user->name = 'Foo';
Bien que les propriétés dynamiques offrent la flexibilité de créer des classes telles que des objets de valeur sans déclaration de classe stricte, elles ouvrent la possibilité de bogues potentiels et de comportements inattendus dans les applications. Par exemple, une faute de frappe dans une instruction qui définit une propriété peut passer inaperçue car PHP autorise silencieusement toutes les propriétés dynamiques.
Dans PHP 8.2 et versions ultérieures, la définition d'une valeur sur une propriété de classe non déclarée est obsolète et émet un avis d'obsolescence la première fois que la propriété est définie pendant la durée de vie de l'exécution de l'application.
Code : Tout sélectionner
class User {
private int $uid;
}
$user = new User();
$user->name = 'Foo';
Obsolète : La création de la propriété dynamique User::$name est obsolète dans ... en ligne ...
La définition des propriétés à partir de la classe émet également l'avis d'obsolescence :
Code : Tout sélectionner
class User {
public function __construct() {
$this->name = 'test';
}
}
new User();
Obsolète : La création de la propriété dynamique User::$name est obsolète dans ... en ligne ...
Il existe des cas d'utilisation légitimes de propriétés dynamiques, telles que des objets de valeur dérivés d'une réponse JSON dynamique ou des objets de configuration qui autorisent des valeurs arbitraires.
Idéalement, les classes doivent déclarer les propriétés dynamiques dans la classe pour éviter l'avis de dépréciation. Il n'est pas nécessaire de déclarer la propriété avec un type de propriété.
En savoir plus => https://php.developpez.com/actu/336283/ ... ynamiques/
Tracker => https://tracker.phpbb.com/projects/PHPB ... eated+DESC