Je suis juste curieux. En PHP, pourquoi Mise à jour: d'ailleurs, était ECHO code> est-il implémenté comme fonction? Pourquoi PHP n'a-t-il pas simplement donné
printf code> et ne parle jamais de
echo code>? Veuillez noter que: p>
echo code> vs.
printf code>. li>
echo code> est une construction de langue. li>
ul>
printf code> implémenté à l'aide de
echo code>? p>
3 Réponses :
echo est une construction de langue. Fonction Utilisez la langue de la langue pour faire leur travail. Expliquer n'est pas exactement ma spécialité, mais une action Google m'a amené à ce sujet: P>
est la différence entre une construction de langues et une fonction "intégrée" dans php? p>
Quelques contenus importants: P>
... p>
C'est la racine de la raison pour laquelle vous ne pouvez pas redéfinir les constructions de langue comme Echo ou imprimer: ils sont effectivement codés dans l'analyseur, tandis que les fonctions sont mappées à un ensemble de constructions linguistiques et l'analyseur vous permet de modifier cette cartographie à compiler ou exécuter pour substituer votre propre ensemble de constructions de langue ou d'expressions. P>
... p> blockQuote>
Merci. J'ai déjà lu ça avant. Mais je suis juste curieux pourquoi l'équipe PHP exposée echo code>, une construction de langue que je vois rarement dans un autre langage de programmation, au lieu de l'envelopper dans une fonction (IIRC, Python modifié
Imprimer code > fonctionner dans la version 3).
@HAI MINH NGUYEN: Eh bien, je ne pense pas que Rasmus Lerdorf, Zeev Suraska ou Andi Gutmans en sont là. Je pense que comme les créateurs initiaux de PHP, seuls ils pouvaient donner une réponse satisfaisante à la raison i> pour ce comportement. (Ils en avaient probablement un, mais il est caché dans les brumes du temps de nous, de simples mortels;)))
echo n'est pas une fonction et il ne renvoie pas une valeur comme l'impression. Imprimer est une construction de langue aussi - ne nécessite pas de parenthèse. P>
manuel: ECHO - Aucune valeur n'est renvoyée. Imprimer - retourne 1, toujours. P>
Le fait reste que le retour d'une valeur dégrade la performance du système. P>
donc .. Maintenant, puisque Printf est une fonction (qui retourne la longueur de la chaîne de sortie) la réponse que je crois est évidente. P>
Aussi, vous pouvez utiliser: echo $ var1, $ var2, $ var3; Cela évite la concaténation.
Juste une supposition sauvage, mais c'est peut-être parce que PHP était utilisé comme des fichiers binaires CGI. Il serait donc de faciliter la création de scripts Shell de portage, puisque vous pouvez utiliser le binaire ECHO dans ceux. P>
Pourquoi semble-t-il que la plupart des gens essaient de répondre ou de verrouiller cela n'ont même pas lu la question complètement?
(SourceCode) i> Révision de la tête de formated_print.c