Maison  >  Article  >  développement back-end  >  Pourquoi les appels de fonction ne sont pas autorisés comme valeurs par défaut d'attribut en PHP ?

Pourquoi les appels de fonction ne sont pas autorisés comme valeurs par défaut d'attribut en PHP ?

DDD
DDDoriginal
2024-10-17 20:31:03417parcourir

Why Function Calls Are Not Allowed as Attribute Default Values in PHP?

Pourquoi les attributs PHP n'autorisent pas les fonctions

En PHP, les valeurs par défaut des attributs ne peuvent pas inclure d'appels de fonction dans les déclarations de classe. Cette restriction a suscité des interrogations sur son raisonnement.

Perspective de conception

La conception du compilateur PHP joue un rôle crucial dans cette limitation. Lors de l'analyse des déclarations de variables de classe, la grammaire attend des scalaires statiques ou des tableaux de scalaires statiques comme valeurs valides.

Bien que modifier la grammaire pour prendre en compte les appels de fonction dans les attributs puisse éliminer les erreurs de syntaxe, cela introduirait un nouveau problème lors de la compilation. Le compilateur fonctionne en générant un tableau d'opcodes lors de la déclaration de classe. Des valeurs non statiques, telles que le résultat d'un appel de fonction, perturberaient ce processus en modifiant la séquence d'opcode attendue.

Limites structurelles

Pour rectifier cela, le le compilateur nécessiterait un nouveau tableau d'opcodes limité uniquement aux déclarations de variables de classe. Cependant, déterminer le moyen approprié pour évaluer ce tableau étendu présente un autre défi :

  • Chargement du fichier : La fonction peut ne pas être disponible à ce stade.
  • Accès à la propriété :Retarder l'évaluation jusqu'à ce que l'accès à la propriété entraverait la création d'objets.
  • Construction d'objet : L'évaluation lors de la construction est plus judicieuse mais présente toujours des problèmes avec les références cycliques.

Défis de mise en œuvre

Bien que d'autres langages dynamiques aient surmonté ces obstacles, y parvenir en PHP nécessiterait une restructuration importante. Les concepteurs du langage ont jusqu'à présent considéré cela comme une faible priorité, car cela nécessiterait un effort considérable sans un bénéfice clair.

Conclusion

La restriction sur les appels de fonction dans PHP, les valeurs par défaut des attributs sont une conséquence de la conception du compilateur et de la difficulté pratique d'implémenter cette fonctionnalité dans les structures existantes.

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