Maison > Article > développement back-end > Pourquoi les expressions mathématiques provoquent-elles des erreurs de syntaxe dans les déclarations de propriétés de classe PHP ?
Expressions autorisées dans les déclarations de propriétés de classe PHP
La documentation PHP suggère que les déclarations de propriétés dans les classes peuvent être initialisées avec des valeurs constantes, à l'exclusion de l'exécution. information. Cependant, certaines initialisations de tableaux et d'expressions mathématiques semblent provoquer des erreurs de syntaxe.
Initialisations avec des expressions simples
Selon la documentation, les expressions simples doivent être acceptées. Ici, nous examinons trois variantes de tableaux et d'expressions mathématiques :
Accepté :
<code class="php">public $var = array( 1 => 4, 2 => 5, );</code>
Erreur de syntaxe :
<code class="php">public $var = array( 1 => 4, 2 => (4+1), );</code>
Erreur de syntaxe :
<code class="php">public $var = 4+1;</code>
Le premier exemple initialise un tableau avec des valeurs numériques et est accepté. Cependant, les deuxième et troisième exemples, utilisant des expressions mathématiques, entraînent tous deux des erreurs de syntaxe. Cela suggère que la limitation s'étend au-delà de la syntaxe des tableaux pour inclure toutes les expressions calculées.
Expressions scalaires constantes dans PHP 5.6
Contrairement aux limitations décrites précédemment, PHP 5.6 introduit une constante expressions scalaires. Cette nouvelle fonctionnalité permet des expressions scalaires impliquant des littéraux numériques et de chaîne et des constantes dans des contextes où des valeurs statiques étaient auparavant requises, telles que les déclarations de constantes et de propriétés.
<code class="php">class C { const THREE = TWO + 1; const ONE_THIRD = ONE / self::THREE; const SENTENCE = 'The value of THREE is '.self::THREE; public function f($a = ONE + self::THREE) { return $a; } } echo (new C)->f()."\n"; echo C::SENTENCE;</code>
Ce code affichera :
4 The value of THREE is 3
Par conséquent, les limitations initiales sur les initialisations des propriétés de classe ne s'appliquent plus dans PHP 5.6 et versions ultérieures.
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!