Maison > développement back-end > tutoriel php > Pourquoi PHP génère-t-il une erreur « L'expression constante contient des opérations invalides » lors de la définition de propriétés statiques ?

Pourquoi PHP génère-t-il une erreur « L'expression constante contient des opérations invalides » lors de la définition de propriétés statiques ?

Susan Sarandon
Libérer: 2024-12-01 02:12:13
original
932 Les gens l'ont consulté

Why Does PHP Throw a

Erreur PHP : l'expression constante contient des opérations invalides

Un problème courant rencontré dans le développement PHP est "Erreur fatale : l'expression constante contient des opérations invalides ", qui se produit lorsque vous tentez d'utiliser une opération non valide dans une expression constante. Cela se produit généralement lors de la définition de propriétés de classe ou de paramètres de fonction en tant que constantes.

Problème

Plus précisément, dans l'exemple fourni, l'erreur est rencontrée à la ligne 214 de la configuration. php file :

protected static $dbname = 'mydb_'.$appdata['id'];
Copier après la connexion

Cette ligne tente de définir une propriété statique nommée $dbname, en l'initialisant avec une concaténation de la chaîne 'mydb_' et la valeur de la variable $appdata['id']. Cependant, cette initialisation n'est pas valide car $appdata['id'] n'est pas une expression constante.

Solution

La solution à cette erreur est de s'assurer que tous les éléments statiques les déclarations de propriétés ou de paramètres sont initialisées avec des valeurs littérales ou constantes qui peuvent être évaluées au moment de la compilation. Dans ce cas, $appdata['id'] n'est pas une valeur constante, elle ne peut donc pas être utilisée dans l'expression constante.

Il existe deux manières possibles de résoudre ce problème :

  1. Supprimer l'attribut statique :
protected $dbname = 'mydb_'.$appdata['id'];
Copier après la connexion

En supprimant l'attribut statique, la propriété devient une propriété dynamique qui est initialisé au moment de l'exécution lorsque la variable $appdata['id'] est définie.

  1. Utilisez une chaîne constante :
private static $dbname = 'mydb_' . 'CONSTANT_STRING';
Copier après la connexion

En utilisant une chaîne constante, l'initialisation devient une expression constante qui peut être évaluée au moment de la compilation.

Supplémentaire Informations

Il est important de comprendre que les déclarations statiques sont résolues lors de la compilation. Cela signifie que les valeurs des variables et autres expressions dynamiques ne peuvent pas être utilisées dans les déclarations constantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal