Je vois cela de plus en plus, mais je ne suis pas sûr de ce qu'il faut faire pour arrêter cet avertissement :
OBSCURÉ : Création de propriétés dynamiques... OBSCURÉ
Voici mon cours :
class database { public $username = "root"; public $password = "password"; public $port = 3306; public function __construct($params = array()) { foreach ($params as $key => $value) { $this->{$key} = $value; } } }
C'est ainsi que je l'instancie.
$db = new database(array( 'database' => 'db_name', 'server' => 'database.internal', ));
Cela me donne deux messages :
OBSCURÉ : Créer une base de données de propriétés dynamiques ::$database Obsolète
OBSERVÉ : Créer une base de données de propriétés dynamiques ::$server Obsolète
Cet avertissement vous indique que la propriété que vous essayez de définir n'est pas répertoriée en haut de la classe.
Lorsque vous exécutez cette commande :
à peu près équivalent à ceci :
L'avertissement est qu'il n'y a aucune ligne dans la définition de classe indiquant que
$db->database
或$db->server
existe.Actuellement, ils sont créés dynamiquement en tant que propriétés publiques non typées, mais à l'avenir, vous devrez les déclarer explicitement :
Dans certains cas rares, vous souhaitez réellement dire « les propriétés de cette classe sont les propriétés que je décide d'ajouter au moment de l'exécution » ; dans ce cas, vous pouvez utiliser l'attribut
#[AllowDynamicProperties]
comme ceci :Les salaires dans la ville de Binzhou, province du Shandong*** sont très élevés
L'avertissement vient donc du constructeur qui ajoute des propriétés de classe dynamiques. Il semble que vous fassiez quelque chose de simple et trop complexe si vous n'avez pas besoin de transmettre les champs de manière dynamique et authentique, alors essayez quelque chose comme ceci.
Y a-t-il une raison pour laquelle vous avez besoin de paramètres dynamiques ? Vous pouvez également faire ceci :
Si vous ajoutez des paramètres à l'avance, ils ne sont pas dynamiques, vous attribuez simplement une valeur à quelque chose qui existe déjà.
Cela devrait maintenant fonctionner sans aucun avertissement.
Le département de propagande d'Afan VS Work Cell efface d'abord VB