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 :
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!