Pourquoi les expressions mathématiques provoquent-elles des erreurs de syntaxe dans les déclarations de propriétés de classe PHP ?

Linda Hamilton
Libérer: 2024-10-29 19:11:02
original
527 Les gens l'ont consulté

Why Do Mathematical Expressions Cause Syntax Errors in PHP Class Property Declarations?

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>
    Copier après la connexion
  • Erreur de syntaxe :

    <code class="php">public $var = array(
      1 => 4,
      2 => (4+1),
    );</code>
    Copier après la connexion
  • Erreur de syntaxe :

    <code class="php">public $var = 4+1;</code>
    Copier après la connexion

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>
Copier après la connexion

Ce code affichera :

4 The value of THREE is 3
Copier après la connexion

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!