Maison >développement back-end >tutoriel php >Pourquoi mon code PHP génère-t-il une erreur « Erreur fatale : l'expression constante contient des opérations invalides » lors de l'initialisation d'une variable statique ?

Pourquoi mon code PHP génère-t-il une erreur « Erreur fatale : l'expression constante contient des opérations invalides » lors de l'initialisation d'une variable statique ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-01 04:14:081101parcourir

Why Does My PHP Code Throw a

Erreur fatale PHP : opérations invalides d'expression constante

Lorsque vous rencontrez l'erreur "Erreur fatale : l'expression constante contient des opérations non valides", elle se produit lorsque une variable statique PHP tente de s'initialiser avec une valeur non littérale ou non constante avant PHP 5.6.

Dans votre cas, le ligne en question :

protected static $dbname = 'mydb_'.$appdata['id'];

tente d'initialiser la propriété statique $dbname avec la valeur de la variable dynamique $appdata['id']. Cependant, les propriétés statiques nécessitent une initialisation avec des constantes ou des littéraux avant PHP 5.6.

La raison derrière cela est que les déclarations statiques sont évaluées au moment de la compilation, ce qui signifie que l'interpréteur PHP ne peut pas accéder aux variables dynamiques qui ne sont connues qu'au moment de l'exécution. . Pour résoudre cette erreur, vous pouvez :

  • Remplacer $appdata['id'] par une chaîne constante : Assurez-vous que le nom de la base de données est une valeur fixe et attribuez-le directement, par exemple, protected static $dbname = 'mydb_my_app';.
  • Supprimez le fichier statique attribut : S'il n'est pas nécessaire que $dbname soit statique, déclarez-le comme une variable régulière sans le mot-clé static, par exemple protected $dbname = 'mydb_my_app';.

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!

Déclaration:
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